title: Difference between sizeof(name) and sizeof name
body: <p>I am following the C primer plus and encounter the following example:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;string.h&gt; //provide strlen() prototype
  #define PRAISE "You are an extraordinary being with a big big brain."
  int main(void)
  {
      char name[40];
  
      printf("What's your name? ");
      scanf("%s", name);
      printf("Hello, %s. %s\n", name, PRAISE);
      printf("Your name of %zd letters occupies %zd memory cells.\n", strlen(name), sizeof name);
      printf("Size of the name %zd", sizeof(name));
  
      return 0;
  }
  </code></pre>
  
  <p>Compiled and run it:</p>
  
  <pre><code>$ ./a.out
  What's your name? Trump
  You are an extraordinary being with a big big brain."
  Your name of 5 letters occupies 40 memory cells.
  Size of the name 40
  </code></pre>
  
  <p>What puzzled me is that <code>sizeof(name)</code> is identical to <code>sizeof name</code>?   </p>
  
  <p>sizeof() is a library routine, but how abut sizeof, it seems as predicate and parameter as it was in command line.</p>