size of array
在c++快速入门里,小甲鱼显示的array size是4,但我试了一下显示的是8 求解答. code如下int addArray( int array[], int n);
int main()
{
int data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int size = sizeof(data) / sizeof(data);
printf("data: %d\n", sizeof(data));
return 0;
}
int addArray( int array[], int n)
{
int sum = 0;
int i;
printf("array: %d\n',sizeof(array));
for( i=0; i<n; i++)
{
sum += array;
}
return sum;
} 数组名相当于指针变量,不同的操作环境,大小不同 我并不理解你的表述
int data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int size = sizeof(data) / sizeof(data);//你这个size求的其实就是数组成员个数 40/4=10个
printf("data: %d\n", sizeof(data));//你这个sizeof(data),求的是数组的长度,那应该是10*4=40
你说的4和8是求什么得出来的呢?
4goodworld 发表于 2020-2-21 21:11
我并不理解你的表述
你说的4和8是求什么得出来的呢?
下面一个printf
sizeof(array)我显示的是8 但是如果是算的指针的大小不应该是4吗 最后的魁拔 发表于 2020-2-21 09:17
数组名相当于指针变量,不同的操作环境,大小不同
是指针的大小不同吗?
上面一个printf得出的答案是一样的 都是40 Yakia 发表于 2020-2-22 04:42
是指针的大小不同吗?
上面一个printf得出的答案是一样的 都是40
看错了,我以为是int addArray,这个函数里的 数组做函数参数,传递的是数组的首地址。所有。。。 数组名作为函数参数时,传递的只是数组的首地址.因此在调用addArray函数式,局部变量array是一个int*类型数据,sizeof(array)相当于sizeof(int*).
函数参数array只能获得数组的起始地址,不能获得数组大小.这也是为什么还要单独传递一个int n用来指示数组有多少个元素了. 你定义了size变量且给它赋值你并没有调用它啊printf里是不是应该打印size变量 而不是sizeof(data)
页:
[1]