首页 > 后端开发 > C++ > 正文

为什么在 C 中声明具有动态大小的浮点数组会导致'预期常量表达式”错误?

DDD
发布: 2024-10-26 13:46:03
原创
828 人浏览过

Why Does Declaring a Float Array with a Dynamic Size Result in an

数组大小混乱导致错误

声明动态大小的 float 数组时,如:

<code class="cpp">int size = 100;
float x[size][2];</code>
登录后复制

您可能会遇到“预期常量表达式”错误。出现这种情况是因为 C 要求数组在编译时具有固定大小,而不是在运行时确定。这里的 size 变量不能用作有效的数组维度。

使用向量的解决方案

要避免此问题,请考虑使用向量:

<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
登录后复制

这将创建一个数组向量,每个数组包含两个浮点数。

替代解决方案

或者,您可以使用 new 的原始内存分配或创建自己的内存分配数组类型:

<code class="cpp">// With new
float (*px)[2] = new float[size][2];

// With custom array type
template<typename T, size_t N>
struct array {
  T data[N];
};

array<float, 2> myArray[size];</code>
登录后复制

其他选项

其他选项包括使用成对向量或使用语法助手滚动您自己的数组类型:

<code class="cpp">// Vector of pairs
std::vector<std::pair<float, float>> x(size);

// Custom array type
template<typename T>
struct identity {
  typedef T type;
};

using FloatArray2 = identity<float[2]>::type;
FloatArray2 myArray[size];</code>
登录后复制

以上是为什么在 C 中声明具有动态大小的浮点数组会导致'预期常量表达式”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!