c ++中动态数组的长度

Jat*_*tin 3 c++ arrays dynamic-arrays

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

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

int *arr = new int[n];   //n is entered by user 
Run Code Online (Sandbox Code Playgroud)

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

int len = sizeof(arr)/sizeof(int);
Run Code Online (Sandbox Code Playgroud)

它给len作为1代替n.为什么会这样?

And*_*rew 12

因为sizeof不适用于动态数组.它给你的大小pointer,因为int *arr是一个指针

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


yur*_*hek 11

因为arr它不是一个数组,而是一个指针,并且你在一个架构上运行,其中指针的大小等于int.