title: Size of pointer, pointer to pointer in C
body: <p>How can I justify the output of the below C program?</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  char *c[] = {"Mahesh", "Ganesh", "999", "333"};
  char *a;
  char **cp[] = {c+3, c+2, c+1, c};
  char ***cpp = cp;
  
  int main(void) {
      printf("%d %d %d %d ",sizeof(a),sizeof(c),sizeof(cp),sizeof(cpp));
      return 0;
  }
  </code></pre>
  
  <p>Prints</p>
  
  <pre><code>4 16 16 4 
  </code></pre>
  
  <p>Why?</p>
  
  <p><a href="https://ideone.com/QAetFj" rel="nofollow">Here is the ideone link</a> if you want to fiddle with it.</p>