首页 > 后端开发 > C++ > 为什么无法初始化可变长度的 C 数组?

为什么无法初始化可变长度的 C 数组?

Linda Hamilton
发布: 2024-12-15 09:05:11
原创
546 人浏览过

Why Can't I Initialize a C   Array with a Variable Length?

理解变量与数字文字的数组初始化

问题:

在 C 中,尝试初始化一个可变长度的数组,例如 int n = 10; double tenorData[n] = {1, 2, 3, ...},导致编译错误。但是,使用固定长度(例如 double tenorData[10])进行初始化会成功。为什么会出现这种情况?

答案:

在 C 中,不允许使用可变大小的数组。虽然某些编译器(例如 G )中的扩展允许它们,但根据标准它们仍然是非法的。要在 C 中创建可变长度数组,您可以:

  • 动态分配内存:使用指针手动分配内存,但请记住稍后取消分配。
  • 使用标准容器:利用像std::vector这样的容器来处理动态内存

如果您仍然需要数组,请考虑使用常量值而不是变量:

  • 常量: 将数组大小声明为一个常量,例如 const int n = 10; double a[n];,因为常量在编译时求值。
  • Constexpr (C 11 ): 对于由函数确定的值,请使用 constexpr,它也会在编译时求值表达式。

以上是为什么无法初始化可变长度的 C 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板