这是非法声明没有大小的数组吗?像
int n;
int array[n];
cin>>n; // assign 5 to n, it will be array with size 5 OR
int n=5; // we assign 5 to n;
int array[n];// int array[5];
问题:哪个是合法的
答案 0 :(得分:2)
也不是合法的c ++。数组的大小必须是常量:
int n = 5; int a[n]; // NOT legal, since it attempts to use VLA
int b[5]; // OK
如果有效,则通过延期。最新的c允许使用VLA。
答案 1 :(得分:2)
标准C ++仅允许数组大小的const
值:
int array[5];
或:
const size_t SIZE = 5;
int array[SIZE];
有一个GCC扩展允许可变长度数组。
注意,如果初始化数组,可以省略数组的大小:
int array[] = { 67, 12, 88, 94, 37}; // size of 5.
由于这是C ++,请考虑使用std::vector<int>
而不是数组。
答案 2 :(得分:0)
C ++不支持VLA,因为其他人提到您可以使用手动管理的动态数组。但不要。
你是一个矢量容器,它具有动态数组的所有优点,除了它是安全的,可调整大小的并且具有良好的界面。
size_t size;
std::cin >> size;
std::vector<int> arr(size, 0); //starting size, default value
arr[0]; //access elments
arr.at(0); //bounds checked access
arr.push_bacK(6); add 6 to back, now has 6 elements
这些不需要删除任何东西,也没有泄漏的可能性。