#include<stdio.h>
#include<stdlib.h>
int main()
    {
        int *p;
        p = (int *)malloc(20);
        printf("%d\n", sizeof(p));
        free(p);
        return 0;
    }
On my 64-bit machine, 4 is printed as the size of p. I'm assuming this is because integers take up 4 bytes in memory, and p is an integer pointer. What if I was running a 32-bit machine? Also, what would happen if I replaced int *p with double *p and (int *)malloc(20) with (double *)malloc(20)?
 
     
     
     
     
    