c ++中动态数组的长度

时间:2012-08-01 13:38:30

标签: c++ arrays dynamic-arrays

  

可能重复:
  How to find the sizeof(a pointer pointing to an array)

我声明了一个像这样的动态数组:

int *arr = new int[n];   //n is entered by user 

然后用它来查找数组的长度:

int len = sizeof(arr)/sizeof(int);

它将len设为1而不是n。为什么会这样?

3 个答案:

答案 0 :(得分:12)

因为sizeof不适用于动态数组。它为您提供pointer的大小,因为int *arr是一个指针

您应该存储已分配数组的大小,或者更好地使用std::vector

答案 1 :(得分:11)

因为arr不是数组而是指针,并且您在指针大小等于int大小的架构上运行。

答案 2 :(得分:0)

安德鲁是对的。 你必须在某处保存 n (取决于你在哪里使用它)。或者,如果您使用的是.NET,则可以使用Array或List ...