问题标签 [variable-length-array]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3587 浏览

c++ - 未记录的 GCC 扩展:结构中的 VLA

在阅读 Clang 文档时,我发现了以下有趣的花絮:[1]

clang 不支持允许在结构中使用可变长度数组的 gcc 扩展。这有几个原因:第一,实现起来很棘手,第二,扩展完全没有文档记录,第三,扩展似乎很少使用。请注意,clang 确实支持灵活的数组成员(在结构末尾具有零或未指定大小的数组)。

如何使用此扩展程序?我的理解是,在构造函数中使用 alloca 会导致堆栈指针在调用函数的末尾被恢复,在这种情况下它将是构造函数——而不是在封闭结构的末尾。

谢谢您的帮助!

0 投票
4 回答
2460 浏览

c++ - C99 式 VLA 有哪些技术缺点?

我从很多人那里听说 C99 中引入的可变长度数组很糟糕。IRC 上的一些人在一分钟前说“我不认为 C++ 会获得 VLA,strosoup 对它们发表了一些非常负面的评论”。

那些人讨厌 VLA 的原因是什么?

0 投票
1 回答
1264 浏览

c - 具有灵活数组成员的常量结构

请考虑以下两种结构:

理想情况下,我可以像这样初始化一个容器:

我的编译器说:“错误:初始化程序太多”

0 投票
2 回答
1638 浏览

c - C99 在运行时如何计算可变长度数组的大小?

在 C89 中,数组的长度在编译时是已知的。但是在 C99 中,对于可变长度数组,数组的长度在运行之前可能是未知的。

那么它是如何计算的呢?

为什么不能以同样的方式计算动态分配数组的长度?

0 投票
5 回答
11305 浏览

c++ - 是否可以在 C/C++ 中声明全局二维数组?

当我尝试像这样声明一个global二维数组C++

我收到一条错误消息
error: variable-size type declared outside of any function

0 投票
5 回答
14552 浏览

c++ - C 和 C++ 中的可变长度数组 (VLA)

我有一些关于VLA及其行为的概念需要澄清。

自 C99 以来的 AFIK 可以将 VLA 声明为本地范围:

但在全局范围内是禁止的:

上面的代码在 C99 中声明了一个 VLA,因为const修饰符不会创建编译时值。在 C++global_size中是编译时值,因此global_array不会成为 VLA。

我需要知道的是:我的推理是否正确?我描述的行为是否正确?

我也想知道:为什么不允许全局范围内的 VLA?在 C 和 C++ 中都被禁止?数组进入全局和局部范围的行为不同的原因是什么?

0 投票
1 回答
879 浏览

database - 类型可变长度数组 Postgresql 列中的默认值

我的问题是如何为可变长度数组列中的某个索引设置默认值。我正在尝试将其中一个位置的值设置为默认字符串'false'。

原因是我希望能够在查询中使用 where 子句来过滤位置值为“true”的项目(我正在手动将特定的项目设置为 true),但没有让我的其余数据默认为 false值我的查询没有获取任何数据。

如果这令人困惑,请告诉我,我会尝试清除它..提前谢谢

0 投票
2 回答
546 浏览

class - 在类中声明可变长度数组

伙计们。这是我的一段代码:

给出的错误:无效使用非静态数据成员Solar_system::planet_no

任何帮助将不胜感激。

0 投票
3 回答
7413 浏览

c - struct 中间的可变长度数组 - 为什么这个 C 代码对 gcc 有效

有一些使用 VLA(可变长度数组)的奇怪代码被 gcc 4.6 视为有效 C(C99,C11):

此代码编译时没有警告:

同样适用于-std=c1x

但这不适用于英特尔 C 编译器或 Clang+LLVM:

所以:

  1. 为什么这被 GCC 认为是有效的?
  2. 如果它是 GCC 的扩展,它在哪里描述?
  3. 它在 C99 和 C11 ISO 标准中有效吗?
0 投票
4 回答
3447 浏览

c - C中的Scanf数组限制?

我在 C 中有一些小错误:

错误:表达式必须有一个常量值

我知道,这意味着我的限制必须有一个恒定值,但是当我遇到这种情况时,我该如何解决呢?

谢谢。

编辑

好的,伙计们,另一个问题,对不起,如果我是垃圾邮件。

错误 4 错误 c2109 下标需要数组或指针类型