如何创建指针指针

问题描述:

我的问题是创建一个特定的矩阵。如何创建指针指针

我必须使用一个数组,例如ptrx指针。这个数组中的每个指针都应该指向一个新数组(在这种情况下,这个数组是int;每个数组都是矩阵中的新行)。

全部x数组应该使用new创建;最后,应该可以很容易地访问矩阵ptr[a][b]

经过大量的尝试和失败,我希望有人能帮助我。

预先感谢您!

+4

请张贴您的企图。 – PaulMcKenzie

+0

http://*.com/questions/27425126/dynamic-allocation-of-two-dimensional-array-c/27425293#27425293 – PaulMcKenzie

+0

是你不使用'std :: vector'? – Quentin

如果指针阵列中的数量是已知的,则可以简单地使用指针的原始阵列到int:

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

然后,你应该单独使用通常为阵列中的每个指针分配内存循环:

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

记住,如果您不再需要该内存,则还要释放上面为内部指针分配的内存。

+1

完全适合我,一切都可以通过ptr [a] [b]访问。现在我对这是如何工作有了更好的理解,非常感谢! – Everknow

+0

@Everknow没有问题的家伙:)但我建议你看看其他的例子。这个主题不是很明显,你需要阅读一个很好的指南,以便完美地理解它;) – nbro

+0

@Rinzler这种方法有一些缺陷,即使几乎所有的时候都用它来创建一个二维数组'T **'。一个缺陷是,如果在循环中间调用'new []'抛出一个异常,就不会有恢复。 – PaulMcKenzie

由于这显然是功课,让我给你一个更好的回答你的缘故与接受的一起。

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的参考。

+0

我一定会记住这一点,谢谢! – Everknow