首页 > 解决方案 > 获取数组指针的大小c ++

问题描述

如何使用 new double[...] 获取指针数组的大小

使用这是有效的

double arr[10];
sizeof(arr)/sizeof(arr[0]);

但这不是

double *arr;
arr=new double[10];
sizeof(arr)/sizeof(arr[0]);

标签: pointerssize

解决方案


最初,您声明了一个大小为 10 的双精度数组。

double arr[10];

然后这个语句给出了数组中数组元素的数量。是的没错。

sizeof(arr)/sizeof(arr[0]);

在其他程序中这个语句....

 double *arr;

创建一个指向双精度的指针。

和这个...

arr=new double[10];

将数组的起始地址存储在 arr 中。但是 arr 仍然是一个指向 double 的指针。

这个说法 ...

sizeof(arr)/sizeof(arr[0]);

是罪魁祸首。这里sizeof(arr)将指针的大小返回为 double而不是数组的大小。并且 sizeof(arr[0]) 返回 double 的大小。根据您的机器,您的指针大小和双精度大小可能会有所不同。但它会打印两个值的商。


推荐阅读