繁体   English   中英

分配一个指针数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM