```
Case I: 
   int a[12];
   printf("%d",sizeof(a));

Case II:
    int *a = (int *)malloc(12*sizeof(int));
    printf("%d",sizeof(a));

```

The above two code snippets return different outputs,

* `48` in the first case
* `4` in the second case

Why is it so?