Memory Allocation - Programming

Q1:

Assume integer is 2 bytes wide. What will be the output of the following code?
#include<stdio.h>
#include<stdlib.h>
#define MAXROW 3
#define MAXCOL 4

int main()
{
    int (*p)[MAXCOL];
    p = (int (*) [MAXCOL])malloc(MAXROW *sizeof(*p));
    printf('%d, %d\n', sizeof(p), sizeof(*p));
    return 0;
}

A 2, 8

B 4, 16

C 8, 24

D 16, 32

ANS:A - 2, 8

No answer description is available. Let's discuss.