问题描述
如果我有一个指向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
具有动态数组所需的一切,因此在这种情况下应是首选。