鱼C论坛

 找回密码
 立即注册
查看: 2480|回复: 4

[已解决]sizeof

[复制链接]
发表于 2022-12-4 16:51:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        int test[100];
        printf("%d,%d,%d,%d\n",sizeof(test),sizeof(&test),sizeof(&test[0]),sizeof(test[0]));
        return 0;
}
请问为什么这个分别是400,4,4,4
最佳答案
2022-12-4 17:29:00
sizeof(test)
简单,test长度乘类型的size,也就是 100 * sizeof(int) = 100 * 4 = 400
sizeof(&test)
&表示求地址,在32位系统中,一个地址的size就是4字节,64位是8字节,你的系统应该是32位,所以就是 4
sizeof(&test[0])
与上面同理,4
sizeof(test[0])
test[0]是int类型,int占4字节,故答案为4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-4 17:29:00 | 显示全部楼层    本楼为最佳答案   
sizeof(test)
简单,test长度乘类型的size,也就是 100 * sizeof(int) = 100 * 4 = 400
sizeof(&test)
&表示求地址,在32位系统中,一个地址的size就是4字节,64位是8字节,你的系统应该是32位,所以就是 4
sizeof(&test[0])
与上面同理,4
sizeof(test[0])
test[0]是int类型,int占4字节,故答案为4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-6 14:54:54 From FishC Mobile | 显示全部楼层
楼上的解释很到位,还把系统的位数说明了一下,非常棒.这里我补充一下

一个数组的地址,默认为第一个数的地址,所以&size和&size[0]指的都是同一个地址

补充内容和为什么是400 4 4 4没啥关系,就是看到数组就想补上这句罢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-6 19:20:43 | 显示全部楼层
本帖最后由 如月ya 于 2022-12-6 19:22 编辑

test是一个数组,你给的元素值是100
可以理解为你在内存里画了100个连续的空房间出来,房间号码是0-99
你的数组是int类型,就是每个房间可以放一个int类型范围内的一个值
在你的计算机里一个int类型是4个字节,相当于你每个房间能放4个字节的东西(对应int类型值得范围)

sizeof以字节为单位输出数量,所以
你四个输出,他们的意思分别是
1,sizeof(test),是在问整个数组也就是100个房间加起来一共有多大,一个int型房间是4个字节,100个房间自然就是400个字节
2,&test ,&test 是在问整个数组的地址在哪儿,sizeof(&test)就是问这个地址占多少个字节。
3,&test[0]是在问第一个房间的房间号是多少,sizeof(&test[0])就是问数组第一个房间的房间号在内存中占多少个字节;
虽然2和3看上去结果一样,但是他们本质的意义不同,问的是两个东西,只是说规范里,整个数组的地址就是第一个房间号的地址,所以他们的输出结果会相同。
你sizeof他们是在问他们的地址占多少位,就是在内存里计算机用多少位存储他们的地址,这个位数是根据你内存来的,不同的人可能结果会不一样。你的刚好是4个字节。
四字节它不一定会全部占满,计算机这样是为了4字节能表示你内存里所有的房间号。
//你可以试试printf("%p,%p,%p",test,&test,&test[0]);
//你会发现三个输出的值完全相同
//单纯的数组名 test 他的值就是第一个元素的地址(第0号房间的房间号)
4,sizeof(test[0]),这个就是在问第一个房间有多大(能装多少个字节的东西),前面提到了,是4个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-7 11:26:39 | 显示全部楼层
楼主在吗,记得设置最佳~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 20:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表