如何在c中初始化和使用2d结构

时间:2013-07-05 19:48:11

标签: c struct 2d

所以我要做的是有一个列表数组,这是我的代码:

typedef struct stackList{
    List * list;
} stack;

int main(){
    int x;
    stack ** stackTable;

    for(x=0;x<100;x++) 
        stackTable[x]=malloc(sizeof(stack*)*100);
}

我在for循环上遇到分段错误,我会假设我尝试使用该结构的方式是错误的。我宁愿定义结构使用List **列表; 或者有没有办法以我试图使用它的方式使用它

2 个答案:

答案 0 :(得分:2)

由于您在未初始化时访问了stackTable,因此会出现分段错误。您无法知道它指向的内存地址,也没有分配一个数组来保存您要取消引用的指针。

你需要让 stackTable 指向一个有效的指针数组,在这种情况下我认为很方便使它成为一个数组:

Stack* stackTable[100];

现在你有一个指向 Stack 的指针数组,你可以初始化它们。

如果您暂时只有一个大100的数组,并且您需要在将来增长它,那就是动态分配它的方式:

Stack** stackTable= malloc(100*sizeof(Stack*));

答案 1 :(得分:-1)

在尝试使用指针和动态内存之前,我可能会建议使用基本的2d数组编写一些基本程序。例如:

char array2d[10][10];

一旦您将元素插入此数组,提取元素等,您可以将所有相同的原则应用于任何类型。