可能重复:
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
。为什么会这样?
答案 0 :(得分:12)
因为sizeof
不适用于动态数组。它为您提供pointer
的大小,因为int *arr
是一个指针
您应该存储已分配数组的大小,或者更好地使用std::vector
答案 1 :(得分:11)
因为arr
不是数组而是指针,并且您在指针大小等于int
大小的架构上运行。
答案 2 :(得分:0)
安德鲁是对的。 你必须在某处保存 n (取决于你在哪里使用它)。或者,如果您使用的是.NET,则可以使用Array或List ...