如何创建指针指针
我的问题是创建一个特定的矩阵。如何创建指针指针
我必须使用一个数组,例如ptr
与x
指针。这个数组中的每个指针都应该指向一个新数组(在这种情况下,这个数组是int
;每个数组都是矩阵中的新行)。
全部x
数组应该使用new
创建;最后,应该可以很容易地访问矩阵ptr[a][b]
。
经过大量的尝试和失败,我希望有人能帮助我。
预先感谢您!
如果指针阵列中的数量是已知的,则可以简单地使用指针的原始阵列到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
。
记住,如果您不再需要该内存,则还要释放上面为内部指针分配的内存。
完全适合我,一切都可以通过ptr [a] [b]访问。现在我对这是如何工作有了更好的理解,非常感谢! – Everknow
@Everknow没有问题的家伙:)但我建议你看看其他的例子。这个主题不是很明显,你需要阅读一个很好的指南,以便完美地理解它;) – nbro
@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
的参考。
我一定会记住这一点,谢谢! – Everknow
请张贴您的企图。 – PaulMcKenzie
http://*.com/questions/27425126/dynamic-allocation-of-two-dimensional-array-c/27425293#27425293 – PaulMcKenzie
是你不使用'std :: vector'? – Quentin