title: What does int * and double ** mean for elements outside the C function's arguments?
body: <p>I am learning C language and doing a lot of practice. I understand that <code>*</code> and <code>**</code> are pointers in <code>.c</code> function. </p>
  
  <p>Please consider the following function (another <code>.c</code> function) </p>
  
  <pre><code>void pcc(int* n, int* d, int* family, int* type, double* par, double* nu, double* out)
  {
    int i, j, in=1, k, **fam;
    double *w, **v, t, **theta, **x, **ny;
  
     …some works
  
  }
  </code></pre>
  
  <p>My question is, why do we use the pointer in the argument of the function? Because as I understand we use the pointer to point the previous identifed elements. </p>
  
  <p>Also, why do we use pointer for some elements that are not already defined in the arguments of the function. For example, in the last function we define a new element after writing the argument of the function: </p>
  
  <pre><code> int i, j, in=1, k, **fam;
        double *w, **v, t, **theta, **x, **ny;
  </code></pre>
  
  <p>For instance, <code>double *w</code> was not in the argument of the function! also <code>**v</code> and other elements. How do we know they must get <code>**</code> or <code>*</code>.</p>
  
  <p>Any help please?</p>