【发布时间】:2014-12-17 05:47:02
【问题描述】:
这是我的代码,它不起作用。
当我像这样传递 char 数组时,它会产生这些错误grid[r][c]
[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] 传递它时,它运行得非常好,即只传递一个整数。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;
}
【问题讨论】:
-
重要的是要认识到,无论您的函数签名是什么样的,您实际上都无法将数组传递给函数。在这种情况下,数组将衰减为指向其第一个元素的指针。
-
另外,你用的是什么编译器?
-
除了指针还有其他解决方案吗??
-
@IskarJarak 我正在使用 Dev C++ 5.4
-
它会起作用。(应该被视为
char *而不是二维数组。)同样scanf("%s[^\\n]%*c", grid[i]);错误。