#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 ++,我如何从用户填充数组大小?这被视为转换为常数还是不转换?
答案 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。
关于他们存在很大的争议,有些人强烈反对那些认为自己有自己位置的人和你真正的人。