在C ++中,sizeof(array)给出了数组中的元素数,而不是(元素数*每个元素的大小)

时间:2014-08-16 19:06:39

标签: c++ arrays

有问题的代码是:

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吗?

2 个答案:

答案 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)