如何创建指针指针

时间:2015-01-06 01:45:35

标签: c++ arrays pointers dynamic

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

我必须使用一个名为ptr的数组,其中包含x个指针。此数组中的每个指针都应指向一个新数组(在本例中为int数组;然后每个数组都是矩阵中的新行。)

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

经过大量尝试和失败之后,我希望有人可以帮助我。

提前谢谢!

2 个答案:

答案 0 :(得分:2)

因为这显然是家庭作业,所以让我给你一个更好的答案,让你的与你所接受的一起去。

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。另外,这里是std::vector的参考。

答案 1 :(得分:1)

如果数组中的指针数已知,您可以简单地使用指向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分配空间。

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

相关问题