首先明确一点:C++是不可以使用变量作为数组长度的

那为什么有些地方的C++用了变量做数组长度,没有报错呢?
那是因为这是C99标准的一部分,叫做 变长数组 即 变量长度数组,这个特性是g++编译器的扩展

换言之,C语言自C99 开始,在特定条件下允许使用变量作为数组长度定义数组。 而C++ 至今不允许这种用法

一般想要变量作为数组长度有以下几种方式

法一:

利用C++ new动态申请

1
2
3
4
5
int n = 10;
int* a = new double[n];
...
delete [] a;

法二:

利用STL中的vector容器

1
2
int n = 10;
vector<int> a(n);

法三:

1
2
const int n = 10;
int a[n];

练习

练习题