先上代码
void my_print(int* arr[], int n){
int i, j;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
printf("%d ", arr[i][j]);
}
puts("");
}
puts("-----------------------");
}
这个函数我想实现的是对一个N*N的二维数组进行输出。可是在跑到printf那里总是会出现段错误,经过多方查询资料。后,终于领悟到,在上面的代码中编译器是无法知道我传进来的二维数组的行和列数的,虽然二维数组原本也是一个一维数组,所以自然不能知道,当i=2时它应该在哪里分行。想到这里,对代码进行修改:
void my_print(int* arr[], int n){
int (*p)[n] = arr;
int i, j;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
printf("%d ", p[i][j]);
}
puts("");
}
puts("-----------------------");
}
如此这般就没有问题了。
写惯了C++,发现C的语法都忘光了。惭愧了