3

可能重复:
如何找到 sizeof(指向数组的指针)

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

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

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

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

它给出lenas1而不是n. 为什么会这样?

4

3 回答 3

12

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

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

于 2012-08-01T13:39:01.980 回答
11

因为arr不是数组,而是指针,并且您在指针大小等于int.

于 2012-08-01T13:40:04.413 回答
0

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

于 2012-08-01T13:41:59.420 回答