【C++ 深入浅出】C++可以使用变量作为数组长度吗

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

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

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

int n = 10;
int a[n]; // Legal in g++ (with extensions), illegal in proper C++

但在不是g++的编译器中这样用就会出错,如下图所示
在这里插入图片描述

正确做法:

原题链接

class Solution {
public:
    int rectCover(int number) {
        int *q = new int[number + 1]; // 动态申请
        q[1] = 1, q[2] = 2;
        for (int i = 3; i <= number; i ++) {
            q[i] = q[i - 1] + q[i - 2];
        }
        
        int res = q[number];
        delete[] q; // 释放堆空间
        return res;
    }
};

总结

当你需要用变量来给定一个数组大小时
一般有以下几个方法

法一:利用C++ new动态申请

int n = 10;
int* a = new double[n]; 
...
delete [] a;

法二:利用STL中的vector容器

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

法三:将n变成const常量

const int n = 10;
int a[n];
发布了239 篇原创文章 · 获赞 80 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_43827595/article/details/104269501