我用三个char创建了一个结构:
typedef struct{
char inside;
char condition;
char whattoprint;
} array;
然后我制作一个2d(数组类型)表并将它malloc并且现在好了
然后我想调用一个函数,我想要初始化我的表,就像这样:
array **initialize_table(int x,int y,array **table){
int i,j;
for(i=0;i<=x;i++){
for(j=0;j<=y;j++){
table[i][j].inside='.';
}
}
return table;
}
编译器没有显示错误,但是当我运行它时,“table [i] [j] .inside ='。';”中存在分段错误。我不知道我做错了什么。 我希望你理解我的意思,如果有人可以提供帮助,那就太棒了!
答案 0 :(得分:2)
如果x的大小是x y,你应该只迭代x-1 y-1,即
int i,j;
for(i=0; i < x; i++){
for(j=0; j < y; j++){
table[i][j].inside='.';
}
}
答案 1 :(得分:2)
问题在于以下几点:
for(i=0;i<=x;i++){
for(j=0;j<=y;j++){
在长度为x
的数组中,索引从0
变为x-1
,因此它应该是
for(i=0;i<x;i++){
这样我们就不会访问不存在的索引x
,对于内部循环也是如此:
for(j=0;j<y;j++){