指向int

问题描述

如果我有一个指向int的指针数组的指针

int **arrs = new int *[n];

并将每个元素分配给指向int的新指针数组

for i<n
 arrs[i] = new int[size]

现在,当我尝试获取这些数组的大小时,给我错误的值

int size = sizeof(arrs[0])/sizeof(int);

它给了我错误的价值。 那么我怎样才能获得正确的价值呢?

解决方法

不能。 arrs[0]是一个指针,因此sizeof(arrs[0])给出了该指针的大小。

有些人惊讶地发现,没有办法,只能通过指向该数组的指针来获取该数组的大小。您必须将尺寸存储在其他位置。

在C ++中,最简单,最好的解决方案是使用std::vector。为什么要重新发明轮子? std::vector具有动态数组所需的一切,因此在这种情况下应是首选。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...