首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我们用vs代码编写C++代码时,为什么我们不能用一个变量来定义数组的大小呢?

当我们用vs代码编写C++代码时,为什么我们不能用一个变量来定义数组的大小呢?
EN

Stack Overflow用户
提问于 2019-07-21 22:44:15
回答 2查看 977关注 0票数 0

为什么在vs代码中编写C++时,我们不能通过变量来定义数组大小呢?

我在Dev C++中输入了相同的代码,并且在Dev C++中支持这样的声明。

代码语言:javascript
运行
复制
struct student_
{
    char name[11];
    char no[11];
    int grade;
};
struct student_ stu[n]; // not supported in vs code, but supported in Dev C++

我希望这样的声明是正确的,但实际结果是错误的。

EN

回答 2

Stack Overflow用户

发布于 2019-07-21 22:48:58

Variable length arrays不是也从来不是标准C++的一部分。因此,静态分配数组的大小在编译时必须是已知的。一些编译器支持将此功能作为编译器扩展(例如,GCC就是这样做的),但它不是可移植的。使用std::vector作为替代。

票数 4
EN

Stack Overflow用户

发布于 2019-07-21 22:50:41

C++中的数组是静态的,这就是为什么在编译时需要知道它们的大小,以便分配适当的空间。您可以使用变量初始化大小,但该变量在编译时必须具有已知的常量值。为此,您可以使用constexpr关键字。

为了让您的示例正常工作,必须像这样声明n

代码语言:javascript
运行
复制
constexpr size_t n = 5;

当您直接将一个数字写入大小初始值设定项中时,该值在编译时自然是已知的,因此也是有效的。

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

https://stackoverflow.com/questions/57134226

复制
相关文章

相似问题

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