由于,昨天晚上刚和女朋友分手,导致今天的面试是一塌糊涂,加上平时确实忽略了基础的东西,所以,在这里登记一下,铭记!!!!!!!!!!!!!!
int a[] = {1,2,3,4};
char *str = "hello world";
char *p=str;
struct st_{
char ch;
int it;
}st;
1.sizeof(a) = ?
2.sizeof(str) = ?
3.sizeof(p) = ?
4.sizeof(st) = ?
5.sizeof(*str) = ?
前提是,我们假设机器时32位的。
1.答案应该是16,这个因该没有问题,在32位的机器上,一个int是4个字节,所以a数组的大小因该是16
2,3.答案因该都是4,应为指针的大小,是表示该指针所能够表示的范围的大小,所以,在32位的机器上,指针能够指向的最大的地址就是32位,也就是4个字节
4.答案是8,因为存在地址对齐的问题
5.答案因该是1,因为*str其实就是指向的str【0】,str【0】是一个char字符,所以大小是1.