所以我要做的是有一个列表数组,这是我的代码:
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 **列表; 或者有没有办法以我试图使用它的方式使用它
答案 0 :(得分:2)
由于您在未初始化时访问了stackTable,因此会出现分段错误。您无法知道它指向的内存地址,也没有分配一个数组来保存您要取消引用的指针。
你需要让 stackTable 指向一个有效的指针数组,在这种情况下我认为很方便使它成为一个数组:
Stack* stackTable[100];
现在你有一个指向 Stack 的指针数组,你可以初始化它们。
如果您暂时只有一个大100的数组,并且您需要在将来增长它,那就是动态分配它的方式:
Stack** stackTable= malloc(100*sizeof(Stack*));
答案 1 :(得分:-1)
在尝试使用指针和动态内存之前,我可能会建议使用基本的2d数组编写一些基本程序。例如:
char array2d[10][10];
一旦您将元素插入此数组,提取元素等,您可以将所有相同的原则应用于任何类型。