title: Difference between char *argv[] and char **argv for the second argument to main()
body: <p><strong>CODE 1</strong></p>
  
  <pre><code>#include&lt;stdio.h&gt;
  
  int main(int argc, char *argv[])
  {
  int j;
  printf("%d", argv[1][0]);
  return 0;
  }
  </code></pre>
  
  <p><strong>CODE 2</strong></p>
  
  <pre><code>#include&lt;stdio.h&gt;
  
  int main(int argc, char **argv)
  {
  int j;
  printf("%d", argv[1][0]);
  return 0;
  }
  </code></pre>
  
  <p><strong>CODE 1 and CODE 2</strong> both give same output. but <strong>argument 2</strong> of main function in CODE 1 and CODE 2 are different. Array of pointers are created above data section at compile time. argv is array of pointers. Then we should declare argument in main function as pointer to pointer to character i.e., **argv. How it is correct to declare as in CODE 1?</p>