sizeof 面试问题总结

本文作者在经历了一场不成功的面试后,深刻反思了自身的技术基础与面试准备的不足,并通过具体代码实例(如int数组、字符串、指针等操作)分析了32位机器环境下内存分配和数据类型的影响。文章旨在提醒程序员重视基础知识,提升技术能力,避免类似失误再次发生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于,昨天晚上刚和女朋友分手,导致今天的面试是一塌糊涂,加上平时确实忽略了基础的东西,所以,在这里登记一下,铭记!!!!!!!!!!!!!!


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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值