c - 声明具有非常量大小变量的数组

标签 c arrays

<分区>

我正在学习 C 语言的考试,并且正在阅读从某个站点下载的 C 语言摘要。 上面写着不允许写arr[i],其中i是一个变量。唯一的方法是使用 malloc。
然而,我写了下面的代码,它在没有警告的情况下编译,并且在 valgrind 上没有错误:

int index = 5;
int a4[index];

a4[0] = 1;
a4[1] = 2;

int index2;
scanf("%d",&index2);
int a5[index2];
a5[0] = 1;
a5[1] = 2;

那么数组声明背后的真相是什么? 谢谢!

最佳答案

C99 允许 variable length arrays在堆栈上创建。您的编译器可能支持此功能。此功能在 C89 中不可用。

从某个角度来看,摘要告诉您的是真实的。 :-)

关于c - 声明具有非常量大小变量的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814719/

相关文章:

c# - 返回 IEnumerable 和调用 ToArray 时的 LINQ 意外行为

java - JSONArray 数据不会显示在 Fragment 上

c - 在C/C++程序中,如何为参数 vector 内存分配内存?

c - 为什么我们可以同时使用函数指针作为 (*func_ptr)() 和 func_ptr() 来调用函数,但数组指针却不能呢?

php - 按即将到来的日期排序

arrays - Swift 3 - 如何初始化多维字符串数组?

C:打印的字符不正确,怀疑是内存。问题

c++ - 在 mongo-c-driver 或 mongo-cxx-driver 中插入文档后如何获得 `_id`?

解析 wpa_cli SCAN_RESULTS 输出的代码

c - 一起打印多行字符串