分配指针数组

时间:2014-08-19 00:53:24

标签: c++ arrays pointers matrix

我遇到了某个地方发生的奇怪的分段错误,我想知道是否可能是因为我分配了指针矩阵数组的方式。

它在.h文件中声明为:

int **matrix;

但是当我通过它时,我以这种方式使用int * matrix [],以便 使用matrix [i]访问各行(这使我的许多任务变得更简单)。

所以,当我分配矩阵时,我应该完成:

matrix = new int * [vertices];
    for (int i = 0; i < vertices; i++)
         matrix[i] = new int[vertices];

或者对于第三行,我应该使用 - &gt;操作者:

   matrix[i]-> new int[vertices];  // Or something like this.

这两者有什么区别?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您建议的第一个选项完全没问题。但是使用->运算符的第二个甚至不是有效的语法。第一个建议的第一行实际上创建了一个int*大小顶点的数组:

matrix = new int * [vertices];

此数组的每个元素都使用一些垃圾值进行初始化。你可以使用这样的大括号确保它初始化为零:new int * [vertices]()。但无论如何,通过matrix[i]->访问任何指针都是没有意义的。事实上,箭头操作符->是一个解除引用操作符,专门用于指向具有成员的对象的指针。希望有所帮助。