首页 >后端开发 >C++ >为什么用可变大小初始化 C 数组会导致错误?

为什么用可变大小初始化 C 数组会导致错误?

Susan Sarandon
Susan Sarandon原创
2024-12-19 08:53:09786浏览

Why Does Initializing a C   Array with a Variable Size Result in an Error?

Array[n] 与 Array[10]:使用变量初始化数组与数值文字

在 C 中,初始化数组时会发生错误以变​​量作为大小的数组,如下面的代码所示:

int n = 10;
double tenorData[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

错误是:“可变大小的对象‘tenorData’可能未初始化。”这是因为 C 中不允许使用可变大小的数组。

G 允许这种行为作为扩展,但它在技术上不符合 C 标准。要解决此问题,可以动态分配内存或使用标准容器。

动态内存分配

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

记住使用delete []释放分配的内存一个;

标准容器

int n = 10;
std::vector<double> a(n);

常量数组

如果需要合适的数组,可以是使用常量值而不是变量:

const int n = 10;
double a[n];

在 C 11 中,从函数获取数组大小时可以使用 constexpr:

constexpr int n()
{
    return 10;
}

double a[n()];

以上是为什么用可变大小初始化 C 数组会导致错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn