鱼C论坛

 找回密码
 立即注册
查看: 5631|回复: 6

n=sizeof(a)/sizeof(a[0])什么意思?

[复制链接]
发表于 2012-1-12 11:32:02 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
求解,麻烦详细点
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-12 12:21:22 | 显示全部楼层

  1.     int nName[] = {1, 2, 3, 4};

  2.     int nSize = sizeof(nName);
  3.     int nCount = nSize / sizeof(nName[0]);
  4.     printf("size=%d, count=%d", nSize, nCount);
复制代码
sizeof(数组名) 求数组总长度,因为一个int占4个字节,因为有4个元素,所以nName = 16个字节,
sizeof(nName[0]) 求的是 nName  第一个元素的大小,因为上面提到int占4个字节所以=4
从而得出 16 / 4  = 4 也就是说  总大小 /  元素的大小 = 元素的个数
为什么说[总大小 /  元素的大小 ], 因为这数组里存的当然是相同类型,所以可以做这样做
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-12 12:23:14 | 显示全部楼层
求数组元素个数的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-12 12:24:31 | 显示全部楼层
本帖最后由 sankeyou 于 2012-1-12 12:25 编辑

还有,为什么要这么写
sizeof(nName) / sizeof(nName[0])

因为如果这里你直接写数组的大小,以后想改变数组的大小你得至少改2个地方
int nName[比如这里改成10]


你 比如 循环的时候用到 for(int i = 0; i < 4; i++)
那你这里4也要改成10,如果用for(int i = 0; i < sizeof(nName) / sizeof(nName[0]); i++),就不需要考虑了,数组元素改为10,这里依然兼容
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-12 12:26:35 | 显示全部楼层
就是动态求数组元素个数
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-12 12:41:11 From FishC Mobile | 显示全部楼层
sankeyou 发表于 2012-1-12 12:24  还有,为什么要这么写  sizeof(nName) / sizeof(nName[0])  

感谢各位的用心回答
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-13 00:37:42 | 显示全部楼层
长见识了
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-10 18:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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