title: What does sizeof(&array) return?
body: <p>Following the question: <a href="https://stackoverflow.com/questions/2528318/how-come-an-arrays-address-is-equal-to-its-value-in-c">How come an array&#39;s address is equal to its value in C?</a></p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #define N 10    
  char str2[N]={"Hello"};
  int main(){
      printf("sizeof(str2): %d bytes\n", sizeof(str2));
      printf("sizeof(&amp;str2): %d bytes\n", sizeof(&amp;str2));
      return 0;
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>sizeof(str2): 10 bytes
  sizeof(&amp;str2): 4 bytes
  </code></pre>
  
  <p>I know that <code>str2</code> alone is the address of the first element in array <code>str2</code>. And that when <code>str2</code> is an argument of <code>sizeof</code> it returns the size of the whole array str2.</p>
  
  <p>In addition, <code>&amp;str2</code> is also the address of the first element in arr <code>str2</code> but from different type (<code>char (*)[N]</code> == pointer to array). But how does <code>&amp;str2</code> behave when it's an argument of <code>sizeof</code>?</p>