c - C中的变量列表数组初始化解释

标签 c

<分区>

给出一组基本的C代码:

int a = 5;
int b[a] = {1,2,3,4,5};

为什么会产生这个错误?

$gcc -o demo demo.c
error: variable-sized object may not be initialized

我明白这是一件坏事,编译器不会允许你这样做。 然而,作为一名教师,我很难解释为什么你不能也不应该这样做。

(假设 C99)

你如何解释这里发生的事情?

最佳答案

Why does this generate this error?

C 标准不允许这样做。可变长度数组不能使用大括号括起来的初始化列表来初始化。

标准说:
C11-§6.7.9/3:

The type of the entity to be initialized shall be an array of unknown size or a complete object type that is not a variable length array type.

关于c - C中的变量列表数组初始化解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295107/

相关文章:

c - 将 pthread_mutex_t 传递给函数

c - 使用 argv 元素时出现问题

c - mmap 文件返回指向内存中不可访问位置的指针

c - 将节点插入单链表时如何避免段错误?

c - 没有命名成员的结构在哪里有用?

c - HINSTANCE 跨线程有效吗?

c++ - sclite (SCTK),C++ 模板参数 Filter::Filter* 无效。 Cygwin

calloc 并使用 c 将数据复制到内存区域

c - 如何将 char 数组转换为 C 中的字符串?

c# - 如何获取字符串中的单词