title: How does an array pointer store its size?
body: <pre><code>#include "stdio.h"
  
  #define COUNT(a) (sizeof(a) / sizeof(*(a)))
  
  void test(int b[]) {
    printf("2, count:%d\n", COUNT(b));
  }
  
  int main(void) {
    int a[] = { 1,2,3 };
  
    printf("1, count:%d\n", COUNT(a));
    test(a);
  
    return 0;
  }
  </code></pre>
  
  <p>The result is obvious:</p>
  
  <pre><code>1, count:3
  2, count:1
  </code></pre>
  
  <p>My questions:</p>
  
  <ol>
  <li>Where is the length(count/size) info stored when "a" is declared?</li>
  <li>Why is the length(count/size) info lost when "a" is passed to the test() function?</li>
  </ol>