当前位置: 首页 > 知识库问答 >
问题:

C++在main()之外定义数组的问题

云令
2023-03-14

当我在两个不同的地方定义数组(具有相同的行)时,我找不到为什么下面的代码不能工作的原因。这是不是好的做法不是我的问题。我只想找到原因。


// 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";
}

共有1个答案

阳德润
2023-03-14

如果全局定义数组,则需要在编译时知道数组的大小。您的变量AB不是常量,因此在编译时不知道它们的值。

但是,如果您使用常量int a=5;const int b=4,它可以按照您的预期工作。

注意,可变长度数组(即,非恒定大小说明符)是C99的一个特性,不是任何当前C++标准的一部分。

 类似资料:
  • 问题内容: 我可以在类定义之外创建,甚至可以在另一个模块中创建吗? 问题答案: 是。您可以在类外部定义函数,然后在类主体中将其用作方法: 您也可以在定义一个函数后将其添加到类中: 您可以根据需要在不同的模块中定义函数和类,但是我建议不要在一个模块中定义该类,然后再将其导入另一个模块中并向其中动态添加方法(如第二个示例),因为那样的话d根据是否已导入另一个模块,其行为与类具有令人惊讶的不同。 我要指

  • 本文向大家介绍vue踩坑记录之数组定义和赋值问题,包括了vue踩坑记录之数组定义和赋值问题的使用技巧和注意事项,需要的朋友参考一下 问题场景:vue页面初始化展示请求后台返回的数据失败,没有报错 输出的this.effective_date: 页面部分: 发现问题:data定义的数据为[]空数组,没有定义数组长度,而赋值的时候用数组下标赋值 修改代码后如下: 打印effective_date的值:

  • 我需要我的MediaPlayer对象作为类变量可见,而不是本地创建。 但是当我试图这样开始的时候- 这也以同样的错误失败- Logcat说- 进程:com。附录24.gg。relaaax,PID:24202 java。lang.RuntimeException:无法实例化活动

  • 前面提到的代码是从MDN修改的。这段代码没有任何意图,只是为了变量声明示例的目的。

  • 问题内容: 我想创建一个类,作为的内部类,但是我想写下外部文件。 我怎样才能做到这一点? 这将是很多内部类,而文件将是 巨大的 。 更新 我真正想做的是定义十个类,它们只能由一个类访问。所有这些都在同一包内定义。 谢谢。 问题答案: 将所有类放入包中,并将这些类定义为包私有。 注意没有关键字吗?如果创建类Hello的实例在包中,则您将只能创建该实例的实例。

  • 我正在为C班的期末考试而学习。我们的教授给了我们这个练习题: 解释为什么代码会产生以下输出: 该问题的示例答案是: cout语句只是循环遍历数组元素,其下标由for循环的增量定义。数组初始化不定义元素大小。for循环定义了数组的大小,它碰巧超过了初始化元素的数量,因此最后一个元素默认为零。第一个for循环打印元素0(120),第二个打印元素1(200),第三个循环打印元素2(16),第四个循环打印