热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

首先明确一点:C是不可以使用变量作为数组长度的那为什么有些地方的C用了变量做数组长度,没有报错呢?那是因为这是C99标准的一部分

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

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

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

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

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

21.02.13 更新:应该是牛客的编译器更新了,用上面的变量作为数组长度也是OK的

正确做法:

原题链接

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

总结

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

法一&#xff1a;利用C&#43;&#43; new动态申请

int n &#61; 10;
int* a &#61; new double[n];
...
delete [] a;

法二&#xff1a;利用STL中的vector容器

int n &#61; 10;
vector<int> a(n);

法三&#xff1a;将n变成const常量

const int n &#61; 10;
int a[n];

写在最后

原创不易&#xff0c;还希望各位大佬支持一下\textcolor{blue}{原创不易&#xff0c;还希望各位大佬支持一下}&#xff0c;

&#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01;\textcolor{green}{点赞&#xff0c;你的认可是我创作的动力&#xff01;}&#xff0c;&#xff01;

⭐️ 收藏&#xff0c;你的青睐是我努力的方向&#xff01;\textcolor{green}{收藏&#xff0c;你的青睐是我努力的方向&#xff01;}&#xff0c;&#xff01;

✏️ 评论&#xff0c;你的意见是我进步的财富&#xff01;\textcolor{green}{评论&#xff0c;你的意见是我进步的财富&#xff01;}&#xff0c;&#xff01;


推荐阅读
author-avatar
赵丽宏67171
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有