请问下数组问题
若有定义inta[]=(1,2,3,4,5,6,7,8,9};则表达式 sizeof(a)/sizeof(a)的值为 首先,你的数组定义有一些错误。在C语言中,如果你想定义一个二维数组,你应该这样做:int a[] = {{1,2},{3,4},{5,6},{7,8},{9,0}};
这里我把最后的一个元素补充为0,因为我们是在每个子数组里放入两个元素。
然后,sizeof(a)会得到整个数组的大小(以字节为单位),而sizeof(a)会得到一个子数组(也就是a的一个元素)的大小(以字节为单位)。
在大多数系统上,一个int是4字节。所以一个子数组的大小是 2 * sizeof(int),也就是8字节。
假设整个数组a的大小是N * sizeof(int),那么数组a有N / 2个子数组(每个子数组两个元素)。因此,sizeof(a) / sizeof(a)就会得到子数组的数量,也就是5。
所以,对于你的数组,表达式sizeof(a) / sizeof(a)的值为5。 该表达式的值为9。
该数组的定义为inta[],表示一个二维数组,其中第一维的大小没有指定,第二维的大小为2。根据初始化列表,该数组实际上被初始化为一个包含9个元素的一维数组,其中每个元素都是一个含有两个int类型的数组。
因此,sizeof(a)将返回整个数组的大小,即9个元素乘以每个元素的大小(2个int类型,即8字节),即9*8=72字节。sizeof(a)将返回数组中第二个元素的大小,即两个int类型,即8字节。因此,sizeof(a)/sizeof(a)将得到9。 正确答案是5,是系统在9后面补了一。个0,刚好组成5个长度为2的一维数组吗? 本帖最后由 桃花飞舞 于 2023-9-22 15:14 编辑
5, 10 / 2,a={1,2,3,4,5,6,7,8,9};a 是整个数组的所有元素长度,a是两个元素的长度
页:
[1]