概念:我正在尝试将数组传递给function1,然后再次将其传递给由function1调用的另一个function2。我要做的就是打印该数组。( ):
6 5 //行数和列数
7 4 5 2 7
6 9 1 6 3
9 2 7 9 8
8 8 1 7 2
2 3 1 8 4
4 6 5 4 6
所以我的主体看起来像这样:
int main()
{
int n,m; //number of lines,number of columns
scanf("%d %d",&n,&m);
int **array;
array = malloc(n * sizeof(int *));
for(int i=0; i<n; i++)
{
array[i] = malloc(m * sizeof(int));
}
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
scanf("%d",&array[i][j]);
}
}
function1(n,m,array);
for(int i=0; i<n; i++)
{
free(array[i]);
}
free(array);
}
function1看起来像这样:
void function1(int n,int m,int **array)
{
function2(n,m,&array);
}
然后是function2:
void function2(int n,int m,int ***array)
{
printf("%d %d\n",n,m);
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
printf("%d ",*array[i][j]);
}
printf("\n");
}
}
我在做什么错了,不仅得到了分段错误,而且还打印出了以下内容: 6 5 7 6 9 8 2 分段故障(核心已转储) 它将第一列打印为一行。
答案 0 :(得分:0)
感谢@Johnny Mopp的评论,因为方括号的优先级高于*我要做的所有事情都是反对* array [i] [j]写(* array)[i] [j]。非常感谢很多评论:)