鱼C论坛

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

[已解决]请问下数组问题

[复制链接]
发表于 2023-9-22 11:50:57 | 显示全部楼层 |阅读模式
1鱼币
若有定义inta[][2]=(1,2,3,4,5,6,7,8,9};则表达式 sizeof(a)/sizeof(a[1])的值为
最佳答案
2023-9-22 11:50:58
首先,你的数组定义有一些错误。在C语言中,如果你想定义一个二维数组,你应该这样做:
int a[][2] = {{1,2},{3,4},{5,6},{7,8},{9,0}};
这里我把最后的一个元素补充为0,因为我们是在每个子数组里放入两个元素。

然后,sizeof(a)会得到整个数组的大小(以字节为单位),而sizeof(a[1])会得到一个子数组(也就是a的一个元素)的大小(以字节为单位)。

在大多数系统上,一个int是4字节。所以一个子数组的大小是 2 * sizeof(int),也就是8字节。

假设整个数组a的大小是N * sizeof(int),那么数组a有N / 2个子数组(每个子数组两个元素)。因此,sizeof(a) / sizeof(a[1])就会得到子数组的数量,也就是5。

所以,对于你的数组,表达式sizeof(a) / sizeof(a[1])的值为5。

最佳答案

查看完整内容

首先,你的数组定义有一些错误。在C语言中,如果你想定义一个二维数组,你应该这样做: 这里我把最后的一个元素补充为0,因为我们是在每个子数组里放入两个元素。 然后,sizeof(a)会得到整个数组的大小(以字节为单位),而sizeof(a[1])会得到一个子数组(也就是a的一个元素)的大小(以字节为单位)。 在大多数系统上,一个int是4字节。所以一个子数组的大小是 2 * sizeof(int),也就是8字节。 假设整个数组a的大小 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-22 11:50:58 | 显示全部楼层    本楼为最佳答案   
首先,你的数组定义有一些错误。在C语言中,如果你想定义一个二维数组,你应该这样做:
int a[][2] = {{1,2},{3,4},{5,6},{7,8},{9,0}};
这里我把最后的一个元素补充为0,因为我们是在每个子数组里放入两个元素。

然后,sizeof(a)会得到整个数组的大小(以字节为单位),而sizeof(a[1])会得到一个子数组(也就是a的一个元素)的大小(以字节为单位)。

在大多数系统上,一个int是4字节。所以一个子数组的大小是 2 * sizeof(int),也就是8字节。

假设整个数组a的大小是N * sizeof(int),那么数组a有N / 2个子数组(每个子数组两个元素)。因此,sizeof(a) / sizeof(a[1])就会得到子数组的数量,也就是5。

所以,对于你的数组,表达式sizeof(a) / sizeof(a[1])的值为5。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-22 11:51:05 | 显示全部楼层
该表达式的值为9。

该数组的定义为inta[][2],表示一个二维数组,其中第一维的大小没有指定,第二维的大小为2。根据初始化列表,该数组实际上被初始化为一个包含9个元素的一维数组,其中每个元素都是一个含有两个int类型的数组。

因此,sizeof(a)将返回整个数组的大小,即9个元素乘以每个元素的大小(2个int类型,即8字节),即9*8=72字节。sizeof(a[1])将返回数组中第二个元素的大小,即两个int类型,即8字节。因此,sizeof(a)/sizeof(a[1])将得到9。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-9-22 11:54:31 | 显示全部楼层
正确答案是5,是系统在9后面补了一。个0,刚好组成5个长度为2的一维数组吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-22 15:09:34 | 显示全部楼层
本帖最后由 桃花飞舞 于 2023-9-22 15:14 编辑

5,   10 / 2  ,a[5][2]={1,2,3,4,5,6,7,8,9};  a 是整个数组的所有元素长度,a[1]是两个元素的长度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 17:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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