假设我有个函数 foo:
void foo(char ***buff, int size) {
for(int i = 0; i != size; i++){
for(int j = 0; j != size; j++) {
(*buff)[i][j] = 'a';
printf("%c\t", (*buff)[i][j]);
}
printf("\n");
}
}
如果我给它传入一个动态 2d 数组的地址,一切安好:
int main(){
static int size = 3;
char **eg = (char**)malloc(size * sizeof(char*));
if(eg != NULL){
for(int i = 0; i != size; i++){
eg[i] = (char*)malloc(size * sizeof(char));
if(eg[i] == NULL){
for(int j = 0; j != i; j++)
free(eg[j]);
free(eg);
exit(1);
}
}
foo(&eg, size);
}
return 0;
}
但是如果我给它传入一个固定大小的 2d 数组的地址时,就报 seg fault 了:
int main(){
static int size = 3;
char eg2[size][size];
foo(&eg2, size);
return 0;
}
请问哪里出了问题?