【问题标题】:What does var[x] do?var[x] 有什么作用?
【发布时间】:2017-02-08 19:16:46
【问题描述】:

关于c变量,我想知道x在里面做了什么:

int var[x]

【问题讨论】:

  • x 定义了int 数组中的元素个数。
  • varx 是什么? var 是一个数组吗?和x 某种整数?
  • 显然cdecl.org 不支持VLA。
  • 我们不知道x 是什么,所以我在第一条评论中没有提到VLA。据我们所知,它是#define x 42,尽管它习惯上使用大写。
  • 我投票决定将此问题作为题外话结束,因为此信息可在c 上的任何文本的首页中找到

标签: c


【解决方案1】:

这是Variable Length Array (VLA) 的声明。

表达式x(很可能是一个变量)的值被视为数组元素的数量。 must have a positive value 在计算表达式时,否则 VLA 的声明会产生未定义的行为。

【讨论】:

  • AFAIK 可变长度数组在 C99 标准中,但在 C11 中是可选的。所以 VLA 一定看起来是有史以来最好的东西,但由于我没有遵循的原因,它失宠了。也许 MS 明智的做法是从未实施过 VLA(舌尖上的舌头)。
  • @WeatherVane 我同意,VLA 引入的问题比它们解决的问题多,因为你永远不知道声明是否会因为 x 对于堆栈来说太大而崩溃。
  • 这是一个可变长度数组 (VLA) 的声明。 在这种情况下不是:enum values{n, x, y, z}; :)
  • @KeineLust 没有 OP 的解释,不可能知道。鉴于 OP 的要求,x 不太可能是常量,因为带有常量的声明更为常见。
  • @KeineLust int *a[n] 仍然是一个大型 VLA。如果您想要一个 Nx4 数组,请使用 int (*a)[4] = malloc(n*sizeof(*a)); 并在 *a 周围加上括号。
【解决方案2】:

int定义了变量的类型,[]定义了变量为数组,[]中的数字表示数组中元素的个数。 Int var[4] 将 var 设置为 4 个整数的数组 所以,在那之后,var[0] 是第一个元素,var[1] 第二个和 var[3] 最后一个(你可以看到索引从 0 开始)

【讨论】:

    猜你喜欢
    • 2010-11-09
    • 2023-03-27
    • 2019-09-11
    • 2018-09-25
    • 2010-10-27
    • 2023-03-04
    • 2011-03-06
    • 1970-01-01
    相关资源
    最近更新 更多