指向指向 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
拥有你想要的动态数组的一切,在这种情况下应该是首选。
如果我有指向 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
拥有你想要的动态数组的一切,在这种情况下应该是首选。