为什么数组传入函数后空间大小会变?
来源:1-1 2020重C++ 课程导学
慕少7291608
2022-06-26
#include <iostream>
using namespace std;
int checksize(int arr[]) {
return sizeof(arr);
}
int main() {
int arr1[] = { 34,55,1,10,7 };
int size = checksize(arr1);
cout << "数组的空间大小为:" << sizeof(arr1) << endl;
cout << "函数里的数组的空间大小为:" << size << endl;
}
为什么在checksize函数中,用sizeof函数查看数组大小得到的结果与数组在main函数中的结果是不同的?
一个是20,一个是8
int 占4个空间大小,5个元素,理应是20,请问为什么传入checksize函数后空间大小会变?如果想要让checksize函数中sizeof查看数组空间大小的结果也是20,有什么解决办法
写回答
1回答
-
作为数组时计算其长度当然是sizeof(int)*数组尺寸,这里是20;在C中当数组名作为参数传递时会出现退化情况,这是出于对效率的考虑,只传递一个数组的首地址,也就是指针,所以在函数内得到的尺寸,你应该是64位编译的,所以地址是8字节,如果是32位,应该是4字节。
00
相似问题