title: What is the difference between int * and int a[size]
body: <pre><code>Case I: 
     int a[12];
     printf("%d",sizeof(a));
  
  Case II:
      int *a = (int *)malloc(12*sizeof(int));
      printf("%d",sizeof(a));
  </code></pre>
  
  <p>The above two code snippets return different outputs,</p>
  
  <ul>
  <li><code>48</code> in the first case </li>
  <li><code>4</code> in the second case</li>
  </ul>
  
  <p>Why is it so?</p>