【发布时间】:2022-08-09 19:51:08
【问题描述】:
我有一个初学者的疑问。
如何将用户输入的二维数组/向量传递给函数?
由于用户将输入行数和列数,因此我们将要求输入。
int n, m;
int main(){
cin >> n >> m;
return 0;
}
输入后,我们将询问每个单元格的值。
int n, m;
int main(){
cin >> n >> m;
char ary[n][m];
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> ary[i][j];
}
}
return 0;
}
一旦我们输入了整个矩阵,我们想通过一个函数来打印它。
int n, m;
void fun(char ary[n][m]){
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cout << ary[i][j] << \" \";
}cout << endl;
}
}
int main(){
cin >> n >> m;
char ary[n][m];
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> ary[i][j];
}
}
fun(ary);
return 0;
}
为什么这段代码不起作用?我想也许我可以使用向量,但我也对此一无所知。请帮帮我。
谢谢你。
-
char ary[n][m];不是标准 C++。数组大小必须是编译时常量。你应该看看std::vector -
如果要传递矩阵,则传递矩阵。换句话说,将数组放在一个类/结构中并传递它。更简单的语法和更好的语义。对于数组,您还可以考虑使用 std::array 或 std::vector 它们的行为更像类,可以作为 (const) 引用传递并从函数返回(使用 \"C\" 风格更难正确执行数组)
-
@463035818_is_not_a_number 数组大小必须是编译时常量是什么意思?你能帮我看看如何用矢量来做吗?
-
无论哪个 C++ 教科书或网站向您展示了这种声明数组的示例:扔掉那本书,或者不再访问该网站。你没有被教导正确的 C++。有关如何使用
std::vector而不是数组的完整讨论,请参阅一本好的 C++ 教科书,就像这样。期望通过一次问一个问题来学习 C++ 是不现实的。学习 C++ 的唯一方法是使用一本好的教科书。 -
在 C 中,使用 VLA,它将是
void fun(int n, int m, char ary[n][m])。对于 C++,您可以改用std::vector<std::vector<int>>。
标签: c++ arrays multidimensional-array parameters c++17