由于,昨天晚上刚和女朋友分手,导致今天的面试是一塌糊涂,加上平时确实忽略了基础的东西,所以,在这里登记一下,铭记!!!!!!!!!!!!!!
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.
本文作者在经历了一场不成功的面试后,深刻反思了自身的技术基础与面试准备的不足,并通过具体代码实例(如int数组、字符串、指针等操作)分析了32位机器环境下内存分配和数据类型的影响。文章旨在提醒程序员重视基础知识,提升技术能力,避免类似失误再次发生。
16万+

被折叠的 条评论
为什么被折叠?



