title: C: array pointer pointing to its own address and carrying a value at the same time?
body: <p>I am newbie in c</p>
  
  <p>So in c,
  if I do the following in main method,</p>
  
  <pre><code>int* a = malloc( sizeof( int ) );
  a[0] = 1;
  printf( "%x\n", a ); // 1d02230
  printf( "%x\n", &amp;a ); // 4bed1c00
  printf( "%x\n", a[0] ); // 1
  printf( "%x\n", &amp;a[0] ); // 1d02230
  </code></pre>
  
  <p>This makes sense to me.
  But when I do the following,</p>
  
  <pre><code>int b[] = {1};
  printf( "%x\n", b ); // 4bed1bf0
  printf( "%x\n", &amp;b ); // 4bed1bf0
  printf( "%x\n", b[0] ); // 1
  printf( "%x\n", &amp;b[0] ); // 4bed1bf0
  </code></pre>
  
  <p>This does not make sense to me... It looks like b is a pointer pointing to its own address, which also carries the value 1. I suspect It has something to do with b being a static array, but how do I make sense of this????</p>