【问题标题】:Defining the amount of elements in an array [duplicate]定义数组中元素的数量[重复]
【发布时间】:2021-06-11 13:49:31
【问题描述】:

我想知道我是否这样做:

int TOPE , vector[TOPE] ;
cin >> TOPE ;

vector 是获取我输入的元素数量还是它有一个我无法控制的数字?

【问题讨论】:

  • 这个问题与 C# 有什么关系?
  • 。 C++ 也不支持变长数组,即使你的编译器也有这个特性,它不会在初始化后调整数组的大小。
  • 您将无法创建任意大小的数组,只能创建一些预定义的数组(来自常量或文字)。对动态数组使用std::vector

标签: c++


【解决方案1】:

变量vector 是一个可变长度数组(VLA)。标准 C++ 不支持,但一些编译器支持它作为扩展。

变量TOPE在声明变量vector的时候没有初始化,所以它的大小是不确定的。

要将 VLA 的大小设置为输入的数字,您应该这样写:

int TOPE;
cin >> TOPE ;
int vector[TOPE] ;

要以更标准的方式进行,您应该使用std::vector 而不是 VLA:

int TOPE;
cin >> TOPE ;
std::vector<int> vector(TOPE);

【讨论】:

  • 如果使用#define TOPE 10,TOPE 仍然是一个变量还是会这样工作?
  • #define 就像一个字符串替换。使用它,TOPE 将被替换为10,它不再是一个变量。
【解决方案2】:

首先,VLAs 或可变长度数组不是 C++ 标准,尽管像 gcc 这样的一些编译器确实支持它。更多信息:Why aren't variable-length arrays part of the C++ standard?

其次,编译器以自上而下的方式读取。在将变量用作数组的长度后更改变量不会以任何方式更改数组。

要正确声明它,请像这样声明它:

int TOPE; std::cin >> TOPE;
int vector[TOPE];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-02
    • 2020-12-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 2019-03-06
    • 2013-08-20
    相关资源
    最近更新 更多