首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们能给静态数组的大小一个变量吗?

我们能给静态数组的大小一个变量吗?
EN

Stack Overflow用户
提问于 2011-10-08 11:49:09
回答 6查看 5.7K关注 0票数 11

你好,我想问的每个人,我已经读过,我们只能使用指针和使用malloc或newlike来声明动态数组。

代码语言:javascript
运行
复制
int * array = new int[strlen(argv[2])];

但我已经写了

代码语言:javascript
运行
复制
int array[strlen(argv[2])];

它没有给我任何错误

我读过静态数组只能通过给定常量数组大小来声明,但是这里我给出了静态数组的可变大小。

为什么这么感谢

它是安全的使用,还是有可能在任何后期阶段,它会造成问题,我正在使用gcc linux。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-10-08 11:52:46

您所拥有的是一个可变长度数组(VLA),它不是C++的一部分,尽管它是C99的一部分。许多编译器提供了这个特性作为扩展。

即使是非常新的C++11也不包括VLA,因为整个概念并不适合于C++11的高级类型系统(例如,什么是decltype(array)?),C++为运行时大小的数组(比如std::vector)提供了开箱即用的库解决方案。

在GCC中,用-std=c++98/c++03/c++0x-pedantic编译会给你一个警告。

票数 18
EN

Stack Overflow用户

发布于 2011-10-08 11:54:12

C99 support variable length array,它在c99中定义了6.7.5.2节。

票数 5
EN

Stack Overflow用户

发布于 2011-10-08 11:54:45

你用C99写的作品。这是一个名为“可变长度数组”的新加法。通常不鼓励使用这些数组,因为没有接口可以使分配失败(malloc可以返回NULL,但是如果不能分配VLA,程序将出现分段错误或更糟的错误行为)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7696591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档