【发布时间】:2020-11-14 06:43:20
【问题描述】:
我遇到了定义一个函数的需求,它的参数从 main() 函数中获取参数。代码如下:
#include <iostream>
using namespace std;
void unravel(char arr[][column], int field[][column], int x, int y) { //revealing adjoined cells
for (int minusrows = -1; minusrows < 2; minusrows++){
for (int minuscolumns = -1; minuscolumns < 2; minuscolumns++){
arr[x + minusrows][y + minuscolumns] = field[x + minusrows][y + minuscolumns] + '0';
}
}
}
int main (){
int row, column;
cin >> row >> column;
char a[row][column];
int field[row][column];
for (int i = 0; i < row; i++){ //filling a with asterisks, field with integers
for (int j = 0; j < column; j++){
a[i][j] = '*';
field[i][j] = i + j;
}
}
int x = 2, y = 3;
unravel(a, field, x, y);
for (int i = 0; i < 5; i++){ //printing out the array a
for (int j = 0; j < 5; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
这是我得到的错误:
main.cpp:4:25: error: ‘column’ was not declared in this scope
void unravel(char arr[][column], int field[][column], int x, int y) {
^~~~~~
main.cpp:4:32: error: expected ‘)’ before ‘,’ token
void unravel(char arr[][column], int field[][column], int x, int y) {
^
main.cpp:4:34: error: expected unqualified-id before ‘int’
void unravel(char arr[][column], int field[][column], int x, int y) {
^~~
因此,我们的目标是将最初由星号 (*) 组成的 2D 数组 a[ ][ ] 中的一个单元格 围绕 的值更改为 int 2D 数组字段 [ ][ 的值] 的相同指标。为此,函数 unravel() 负责。当我使用整数 5 而不是 row 和 column 时,代码运行良好。
#include <iostream>
using namespace std;
void unravel(char arr[][5], int field[][5], int x, int y) { //revealing adjoined cells
for (int minusrows = -1; minusrows < 2; minusrows++){
for (int minuscolumns = -1; minuscolumns < 2; minuscolumns++){
arr[x + minusrows][y + minuscolumns] = field[x + minusrows][y + minuscolumns] + '0';
}
}
}
int main (){
char a[5][5];
int field[5][5];
for (int i = 0; i < 5; i++){ //filling a with asterisks, field with integers
for (int j = 0; j < 5; j++){
a[i][j] = '*';
field[i][j] = i + j;
}
}
int x = 2, y = 3;
unravel(a, field, x, y);
for (int i = 0; i < 5; i++){ //printing out the array a
for (int j = 0; j < 5; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
因此问题是:是否可以从 main() 函数中存储一些数据,以便函数 unravel() 可以按我的预期工作?我知道变量是在范围内定义的。我看到的关于我得到的错误的任何其他内容都与我的问题没有太大关系。对不起,如果帖子看起来很长。提前致谢。
【问题讨论】:
-
char a[row][column];int field[row][column];-- 这不是有效的 C++。 C++ 数组的大小必须由常量表达式表示,而不是运行时变量。 C++ 中的动态数组是使用std::vector完成的