如何在C中传入一个多维char数组?

时间:2014-10-21 21:01:37

标签: c arrays function char

这是我的代码,但无效。 当我像这样grid[r][c]

传递char数组时,它会产生这些错误
[Error] use of parameter 'r' outside function body

[Error] use of parameter 'c' outside function body

当我传递像grid[][c]

这样的char数组时会产生这些错误
[Error] use of parameter 'c' outside function body

当我传递像grid[][]

这样的char数组时会产生这些错误
[Error] declaration of 'grid' as multidimensional array must have bounds for all dimensions except the first 

当我像grid[1][2]那样传递它时,它运行得非常好,即只传递一个整数。

我被困在这里,我不知道该做什么或不做什么?

如何摆脱这个问题?帮助我!!!

提前致谢!

void dfs(int r, int c, int pacman_r, int pacman_c, int food_r, int food_c, char grid[r][c]) {
    //logic here
}
int main(void) {
    int r, c;
    int pacman_r, pacman_c;
    int food_r, food_c;
    scanf( "%d %d", &pacman_r, &pacman_c);
    scanf( "%d %d", &food_r, &food_c);
    scanf( "%d %d", &r, &c);
    char grid[r][c];
    for( int i=0; i<r; i++) {
        scanf("%s[^\\n]%*c", grid[i]);
    }
    dfs( r, c, pacman_r, pacman_c, food_r, food_c, grid);
    return 0;
}

1 个答案:

答案 0 :(得分:3)

你应该将参数作为char*传递,然后使用它作为指向数组的展平实例的指针

void fn(char* grid, int c){
    printf("%c", (grid+n*c)[m]);
}

这将打印`grid [n] [m]