c - 如何在C中向函数传递多维字符数组?

标签 c arrays function char

这是我的代码,它不起作用。 当我像这样传递 char 数组时,它会生成这些错误 grid[r][c]

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

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

当我像这样传递 char 数组时,它会生成这些错误 grid[][c]

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

当我像这样传递 char 数组时,它会生成这些错误 grid[][]

[Error] declaration of 'grid' as multidimensional array must have bounds for all dimensions except the first 

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

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

如何解决这个问题?帮助我!!!

提前致谢!

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;
}

最佳答案

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

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

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

关于c - 如何在C中向函数传递多维字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26496238/

相关文章:

c - 如何用C语言的两个冒号生成随机数?

c - 如何将字体设置为用户使用字体选择器选择的字体?

objective-c - 为什么这个方法被调用两次?

java - 从 jsonArray java android 获取字符串

C:将具有数组的指针传递给函数时,会出现运行时错误。为什么?

c - 在 strcpy 函数中使用指针作为参数。尝试理解书本上的代码

c++ - 模板类成员函数的显式特化

python - python函数的签名是什么

c - 如何在 Arduino 代码中使用延迟?

function - ASM , 用 asm 调用函数