有问题的代码是:
int* array = new int;
int array2[] = {2,3,4,5,6};
int noOfEl, i;
cin>> noOfEl;
for(i=0; i<noOfEl; i++)
cin>> array[i];
cout<< "SizeOfArray-> " << sizeof(array) << endl;
cout<< "SizeOfOneEl-> " << sizeof(array[0]) << endl;
cout<< "SizeOfArray2-> " << sizeof(array2);
输入文件为 input.in ,如下所示:
4
8
2
17
9
我得到的输出是:
SizeOfArray-> 4
SizeOfOneEl-> 4
SizeOfArray2-> 20
为什么?
在数组的情况下,它不应该是20吗?
答案 0 :(得分:2)
您的输出是预期的:
array
是指向int
的指针,因此sizeof(array)
会返回实施中指针的大小。
array[0]
是int
,因此sizeof(array[0])
会在您的实施中返回int
的大小。
array2
一个数组:sizeof(array2)
返回数组的总大小(N * sizeof(int)
)
答案 1 :(得分:2)
sizeof(array)
== sizeof (int*)
sizeof(array[0])
== sizeof (int)
sizeof(array2)
== sizeof(int[5])
== 5 * sizeof (int)