这被认为是转换变量为常数吗?

时间:2018-02-06 22:28:08

标签: c++ arrays

#include <iostream>
using namespace std;
int main () {
int x;
cin >> x;
const int sz = x;
int arr[sz];
for (int i = 0; i < sz; i++){
    cin >> arr[i];
}
for (int i = 0; i < sz; i++){
    cout << arr[i] << endl;
}
return 0;
}

arr [variable]不是标准的c ++,我如何从用户填充数组大小?这被视为转换为常数还是不转换?

2 个答案:

答案 0 :(得分:0)

  

arr [variable]不是标准的c ++,我怎样才能填写用户的数组大小?

不要使用C风格阵列!使用std::vector,因为在这种情况下更容易:

#include <iostream>
#include <vector>

int main()
{
    std::vector<int> arr;

    for (int x; std::cin >> x;)
    {
        arr.push_back(x);
    }

    for (int i = 0; i < arr.size(); ++i)
    {
        std::cout << arr[i] << "\n";
    }
}
  

这被认为是转换为常数还是不转换?

不,您没有将变量转换为常量,而是将常量变量的值存储在常量中。转换可能需要const_cast

答案 1 :(得分:0)

您正在处理的是可变长度数组(VLA)。 VLA是(现在是可选的)C标准的一部分,但不是C ++标准的一部分。尽管如此,许多主要编译器都支持扩展,允许在C ++中使用VLA。

关于他们存在很大的争议,有些人强烈反对那些认为自己有自己位置的人和你真正的人。