0

我用三个字符制作了一个结构:

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='.';”中有分段错误 线,我不知道我做错了什么。我希望你明白我的意思,如果有人可以帮助它会很棒!

4

2 回答 2

2

如果的大小是 xy 你应该只迭代直到 x-1 y-1 即

int i,j;
for(i=0; i < x; i++){
   for(j=0; j < y; j++){
      table[i][j].inside='.';
   }
}
于 2013-04-10T23:22:44.903 回答
2

问题出在以下几行:

for(i=0;i<=x;i++){
    for(j=0;j<=y;j++){

在一个长度数组中x,索引从0x-1,所以它应该是

for(i=0;i<x;i++){

这样我们就不会访问不存在的 index x,对于内部循环也是如此:

for(j=0;j<y;j++){
于 2013-04-10T23:24:11.743 回答