gpt4 book ai didi

c - 难以理解 C 中的可变长度数组

转载 作者:太空狗 更新时间:2023-10-29 15:59:21 24 4
gpt4 key购买 nike

我在看书时发现数组大小必须在声明时给出或在运行时使用 malloc 从堆中分配。我用 C 编写了这个程序:

#include<stdio.h>

int main() {
int n, i;
scanf("%d", &n);
int a[n];
for (i=0; i<n; i++) {
scanf("%d", &a[i]);
}
for (i=0; i<n; i++) {
printf("%d ", a[i]);
}
return 0;
}

这段代码工作正常。

我的问题是这段代码如何正确工作。是否违反了 C 的基本概念,即数组大小必须在运行前声明或在运行时使用 malloc() 分配它。我没有做任何这些两件事,那为什么它能正常工作?

我的问题的解决方案是 C99 支持的可变长度数组,但如果我绕过我的代码并将语句放入 int a[n];在 scanf("%d,&n); 之上然后它停止工作为什么会这样。如果 C 中支持可变长度数组?

最佳答案

C99 标准支持 variable length arrays .这些数组的长度在运行时确定。

关于c - 难以理解 C 中的可变长度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com