如何解决在 main() 之外定义数组的 C++ 问题
当我在两个不同的地方定义数组(具有相同的行)时,我找不到以下代码不起作用的原因。这是否是好的做法不是我的问题。我只是想找出原因。
// Array Test: t.cpp
// If only the ONE LINE in question is enabled in either place
// it works/fails as indicated. I wonder why?
#include "iostream"
int a = 5; // Rows
int b = 4; // Columns
// int x[a][b]; // if done here: NoGo! WHY? <<<***************************
int main () {
int x[a][b]; // if done here: OK! <<<***************************
for (int r = 0; r < a; r++) {
for (int c = 0; c < b; c++) {
x[r][c] = (r*10+10) + (c+1);
std::cout << x[r][c] << " ";
}
std::cout << "\n";
}
std::cout << "\nARRAY CREATED \n\n";
}
解决方法
如果您全局定义数组,则需要在编译时知道其大小。在函数内,数组将在堆栈上创建,因此其大小可能是可变的(但请参阅下面的注释)。您的变量 a
、b
不是常量,因此它们的值在编译时未知。
通过将它们声明为常量,它可以按预期工作:
const int a = 5; // Rows
const int b = 4; // Columns
int x[a][b];
备注:可变长度数组(即非常量大小说明符)是 C99 特性,不属于任何当前 C++ 标准。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。