title: Size of char pointer array from function
body: <p>Using this code:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  void printSize(char *messages[]) {
      printf("%d", sizeof(messages) / sizeof(char *));
  }
  
  int main(void) {
  
      printf("Size when through passing direct to function: ");
      printSize((char *[]){"Zero", "One", "Two", "Three"});
      printf("\n");
  
      printf("Size when calculating in main: %d\n", sizeof((char *[]){"Zero", "One", "Two", "Three"}) / sizeof(char *));
  
      return 1;
  }
  </code></pre>
  
  <p>I get output:</p>
  
  <pre><code>Size when through passing direct to function: 1
  Size when calculating in main: 4
  </code></pre>
  
  <p>I understand there is no way to get the correct amount of elements in a char* array, but I am curious as to why they are giving different results.</p>