运行下面代码,请问输出是?
#include<iostream>
using namespace std;
int GetSize(int data[])
{
return sizeof(data);
}
int main()
{
int data1[] = {1, 2, 3, 4, 5};
int size1 = sizeof(data1);
int* data2 = data1;
int size2 = sizeof(data2);
int size3 = GetSize(data1);
cout << size1 << endl << size2 << endl << size3 << endl;
}
size1为20。数组中有5个整数,每个整数占4个字节,所以总共20个字节。
size2为4。data2声明为指针,指向数组的第一个数字。在32位系统上,对任意指针求sizeof,得到的结果都为4。
size3为4。在C/C++中,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针,所以结果仍然为4。