sizeof
main()
{
int arr[16];
int* nptr;
int* ptr;
ptr = malloc(sizeof(int)*16);
printf("SIZE arr=%d , nptr=%d, ptr=%d\n", sizeof(arr), sizeof(nptr), sizeof(ptr));
}
결과 : SIZE arr=64 , nptr=4, ptr=4
main()
{
char arr[16];
char* nptr;
char* ptr;
ptr = malloc(sizeof(char)*16);
printf("SIZE arr=%d , nptr=%d, ptr=%d\n", sizeof(arr), sizeof(nptr), sizeof(ptr));
}
결과 : SIZE arr=16 , nptr=4, ptr=4
배열 크기는 하나크기*배열크기
포인터 크기는 한 Word(32bits, 4bytes)
main()
{
char arr[16];
char* nptr;
char* ptr;
ptr = malloc(sizeof(char)*16);
printf("SIZE arr=%d , nptr=%d, ptr=%d\n", sizeof(int[16]), sizeof(0), sizeof(int*));
}
결과 : SIZE arr=64 , nptr=4, ptr=4
0은 null pointer를 의미하는듯.