如何在C中传递二维数组到函数



我编写了以下代码:

int n,m;
void print(int a[][m])
{
int i=0,j=0;
    for(;i<n;i++)
    {
        for(j=0;j<m;j++)
            printf("%d ",a[i][j]);
        printf("n");
    }
}
int main()
{
scanf("%d %d",&n,&m);
int a[100][100];
int i=0;
    int j=0;
    for(;i<n;i++)
    {
        for(j=0;j<m;j++)
            scanf("%d",&a[i][j]);
    }
    print(a);
return 0;
}

但是我无法回忆起我传递的完整的2D数组。

如果输入是

4 4
1 2 3 4
4 5 6 7
5 6 7 8
5 4 3 2
我得到的输出是
1 2 3 4
0 0 0 0
0 0 0 0
0 0 0 0

我能做些什么来传递完整的数组到函数?

您可以输入值为4的m,但数组a的大小仍然是100。因此,当您将scanf("%d",&a[i][j]);写入i = 1时,您正在读取数组的第101个元素,该元素不属于前16个元素的一部分。您需要a的大小为m,以便做您想做的事情。

相关内容

  • 没有找到相关文章

最新更新