将多维数组从一个函数传递到另一个函数
Passing multi-dimentional array from function to function
概念:我正在尝试将一个数组传递给一个函数 1,然后将它再次传递给 function1.All 调用的另一个函数 2 我要做的是打印该数组。(数组我路过):
6 5 //the number of lines and number of columns
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
所以我的 main 看起来像这样:
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);
}
函数 1 看起来像这样:
void function1(int n,int m,int **array)
{
function2(n,m,&array);
}
然后是函数 2:
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
分段错误(核心已转储)
它将第一列打印为一行。
感谢@Johnny Mopp 的评论,因为括号的优先级高于 * 我所要做的就是写 (*array)[i][j] 来反对 *array[i][j]。谢谢非常感谢您的评论:)
概念:我正在尝试将一个数组传递给一个函数 1,然后将它再次传递给 function1.All 调用的另一个函数 2 我要做的是打印该数组。(数组我路过):
6 5 //the number of lines and number of columns
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
所以我的 main 看起来像这样:
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);
}
函数 1 看起来像这样:
void function1(int n,int m,int **array)
{
function2(n,m,&array);
}
然后是函数 2:
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 分段错误(核心已转储) 它将第一列打印为一行。
感谢@Johnny Mopp 的评论,因为括号的优先级高于 * 我所要做的就是写 (*array)[i][j] 来反对 *array[i][j]。谢谢非常感谢您的评论:)