创建矩阵问题

时间:2014-05-01 17:39:40

标签: c

通过我创建的函数创建用户输入矩阵时遇到了一些麻烦。功能如下:

int create(int l, int c, int one[MAX][MAX])
{
    for(int i = 0; i < l; ++i)
        for(int j = 0; j < c; ++j)
        scanf("%d", &one[i][j]);
}

然后我继续从main调用我的函数:

int main()
{
    int mat[MAX][MAX];
    int lines, collumns;
    printf("Input # of lines, columns:\n");
    scanf("%d %d", &lines, &collumns);

    create(lines, collumns, mat[MAX][MAX]);
}

奇怪的是,如果我将函数复制到main并且只是这样运行它,它可以正常工作。但是,如果我通过函数调用尝试这样做,它将无法工作,因为我的程序崩溃了。我做错了什么人?

2 个答案:

答案 0 :(得分:2)

更改

create(lines, collumns, mat[MAX][MAX]);

create(lines, collumns, mat);

再试一次。

答案 1 :(得分:0)

好吧,当将多维数组传递给C中的函数时,基本规则是

您应该为第一个维度以外的每个维度指定值。

因此,当您传递2D数组时,请按此定义。

int create( int l, int c, int one[][MAX] ){...}

传递3D数组时,请按此定义。

int create3D( int x, int y, int z, int mat[][MAX_Y][MAX_Z] ){...}

在调用函数时,您只需指定数组变量的名称。无需指定尺寸。

create( l, c, one );
create3D( x, y, z, mat );

如果使用-Wall中的gcc开关进行编译,则可以看到这些错误/警告。

祝你好运!