Tag: 细分 故障

将char 转换为char **导致段错误?

好吧我的C有点生疏,但我想我会在C中制作我的下一个(小)项目,所以我可以对它进行修改,不到20行,我已经有了一个seg错误。 这是我的完整代码: #define ROWS 4 #define COLS 4 char main_map[ROWS][COLS+1]={ “a.bb”, “ac”, “adc.”, “.dc.”}; void print_map(char** map){ int i; for(i=0;i<ROWS;i++){ puts(map[i]); //segfault here } } int main(){ print_map(main_map); //if I comment out this line it will work. puts(main_map[3]); return 0; } 我对这是如何导致段错误感到困惑。 从[][]为**时发生了什么? 这是我得到的唯一警告。 rushhour.c:23:3:警告:从不兼容的指针类型传递’print_map’的参数1 rushhour.c:13:7:注意:预期’char **’但参数类型为’char(*)[5]’ [][]和**真的不兼容指针类型吗? 它们似乎只是我的语法。