如何创建指向指针的指针
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
.
我遇到的问题是创建一个特定的矩阵。
我必须使用一个名为 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
.