如何创建指向指针的指针

How to create a pointer to pointers

我遇到的问题是创建一个特定的矩阵。

我必须使用一个名为 ptr 的数组和 x 指针。该数组中的每个指针都应指向一个新数组(在本例中为 int 数组;每个数组都是矩阵中的新行)。

所有 x 数组都应使用 new 创建;最后,应该可以轻松地使用 ptr[a][b] 访问矩阵。

经过多次尝试和失败,我希望有人能帮助我。

提前致谢!

如果数组中的指针数量已知,您可以简单地使用指向 int 的原始指针数组:

int* my_array[10]; // 10 int*

然后你应该使用 for 循环为数组中的每个指针单独分配内存:

for(int i=0; i<10; i++){
    // each int* in the array will point to an area equivalent to 10 * sizeof(int)
    my_array[i] = new int[10]; 
}

另一方面,如果您不知道数组的大小,那么您需要一个指向指针的指针:

int** ptr_to_ptr = new int*[10]; 

请注意,我为 10 int* 而不是 int 分配了 space。

一旦您不再需要该内存,请记住为内部指针释放上面分配的内存。

既然这显然是家庭作业,为了的缘故,让我给你一个更好的答案,与已接受的答案并驾齐驱。

std::vector<std::vector<int>> matrix(10, std::vector<int>(10));
//                                   ^   ^                ^
//                Column count ______|   |________________|
//                                       |
//                                       |___ Each column is 
//                                            initialized with 
//                                            a vector of size 10.

这是一个 10x10 矩阵。由于我们使用的是向量,因此大小是动态的。对于静态大小的数组,您可以使用 std::array if you want. Also, here's the reference for std::vector.