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中文网其他相关文章!