关于sizeof()和数组名

文章讨论了数组名在C/C++中的特性,指出数组名通常代表首元素地址,但sizeof运算符对数组名的处理有特例:它计算整个数组的大小,而不是首元素的大小。在函数参数传递中,数组名作为指针传递,sizeof只能得到首元素的大小。因此,如果需要在函数内部获取数组长度,需在调用时传入。例外还包括对整个数组取地址的情况。

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

arr数组名是数组首元素地址和arr[0]取地址也就是&arr[0]是一样的;

对arr解引用就是1;

数组名通常是首元素地址但是有两个例外:

例外1:sizeof(数组名)--数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节

但是这种方法不能在函数内部使用比如:

因为在这里arr作为参数传过去的是数组首元素地址使用sizeof(arr)计算的是传过去的这个首元素地址占的字节数我这里是64位所以占8个字节arr[0]是int类型占4个字节8/4得到2;

所以在函数内想要用数组长度需要现在main主函数计算出来传到函数当中使用;

例外2:&数组名,数组名代表整个数组,取出的是整个数组的地址

这里的结果虽然一样 1和2含义一样完全等价 但是它们和3不一样

arr,和&arr[0]是数组首元素地址

&arr取出的是整个数组的地址

它们的区别如下图:

最后一组因为16进制所以48和60相差24个字节 ,24/4=6正好是数组元素的个数;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值