[英]Allocating an array of pointers
我遇到了一个奇怪的分段错误,该错误发生在某处,我想知道这是否可能是由于我分配指针矩阵数组的方式所致。
在.h文件中声明为:
int **matrix;
但是,当我通过它时,我以int * matrix []的方式使用它,以便使用matrix [i]访问各个行(这使我的许多工作变得更加简单)。
因此,当我分配矩阵时,我应该做一下:
matrix = new int * [vertices];
for (int i = 0; i < vertices; i++)
matrix[i] = new int[vertices];
还是第三行,我应该使用->运算符:
matrix[i]-> new int[vertices]; // Or something like this.
两者之间有什么区别?
在这种情况下,您建议的第一个选项是完全可以的。 但是第二个带有->
运算符的语法甚至不是有效的语法。 第一条建议的第一行实际上创建了一个int*
大小顶点的数组:
matrix = new int * [vertices];
该数组的每个元素都用一些垃圾值初始化。 您可以使用如下花括号来确保将其初始化为零: new int * [vertices]()
。 但是无论哪种情况,通过matrix[i]->
访问任何指针都是没有意义的。 实际上,箭头运算符->
是解引用运算符,仅与具有成员的对象的指针一起使用。 希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.