指向指向 int 的指针数组的指针数组

Array of pointers to an array of pointers to 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 拥有你想要的动态数组的一切,在这种情况下应该是首选。