title: what is the difference between &a,&a[0],a in c
body: <p>I got the output for the following code as -> <code>6</code></p>
  
  <p>I was confused by the output, so I changed a small portion of code and checked it.</p>
  
  <p>I substituted this <code>int * ptr=(int*)(a+1)</code> for the Not clear statement, I got the output as --> <code>1</code>. How?</p>
  
  <p>I heard <code>&amp;a</code>, <code>a</code>, <code>a[0]</code> all are same address? what makes it different?</p>
  
  <pre><code>#include&lt;stdio.h&gt;
  
  int main()
  {
      int a[] = {1, 2, 3, 4, 5, 6};
      int *ptr = (int*)(&amp;a+1); //NOT CLEAR
      printf("%d ", *(ptr-1) );
      getchar();
      return 0;
  } 
  </code></pre>