首页 > 解决方案 > c中的二维结构数组

问题描述

我正在尝试制作一个二维数组,其中的每个点都将包含 C 中的三个整数。这是我的代码:

typedef struct node
{
    int path;
    int y;
    int z;
}node;

typedef struct graph
{
    node *matrix[10][10];   
}graph;

int main(int argc, char** argv)
{
    graph*map=malloc(sizeof(graph));
    map->matrix[0][0]->path=1;
    printf("%d",map->matrix[0][0]->path);
}

当我运行它时,我得到一个隔离错误,这是我遗漏的东西吗?

标签: cmatrix

解决方案


[使用 OP 编辑​​之前的定义]

您提供的代码无法编译,因为矩阵定义为

node *matrix[10][10];  

不兼容

matrix[0].path

但有

graph*map=malloc(sizeof(graph));

不为矩阵中的元素分配内存,所以做类似的事情(与你的定义兼容):

map->matrix[0][0]->x=1;

您取消引用具有未定义行为的未初始化指针(您的分段错误)

您还需要初始化矩阵中的指针,先验分配内存,例如(至少):

map->matrix[0][0] = malloc(sizeof(node));

或者不要使用具有以下内容的指针:

node matrix[10][10];  

推荐阅读