这是我的代码,但无效。
当我像这样grid[r][c]
[Error] use of parameter 'r' outside function body
[Error] use of parameter 'c' outside function body
当我传递像grid[][c]
[Error] use of parameter 'c' outside function body
当我传递像grid[][]
[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;
}
答案 0 :(得分:3)
你应该将参数作为char*
传递,然后使用它作为指向数组的展平实例的指针
void fn(char* grid, int c){
printf("%c", (grid+n*c)[m]);
}
这将打印`grid [n] [m]