如何将2D数组传递给C中的函数

时间:2014-05-20 10:06:41

标签: c multidimensional-array

我制作了这段代码:

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

如何将完整数组传递给函数?

1 个答案:

答案 0 :(得分:0)

您可以输入值为4的m,但数组a的大小仍为100。因此,当您为scanf("%d",&a[i][j]);编写i = 1时,您正在读取数组的第101个元素,该元素不是前16个元素的一部分。您需要a大小为m才能执行您尝试的操作。