gpt4 book ai didi

c - 奇怪的 C 代码 - 动态数组?

转载 作者:行者123 更新时间:2023-12-02 17:40:17 26 4
gpt4 key购买 nike

我有一些从未知来源复制的代码:

 int Len=0;
printf("Please input the length of vector");
scanf("%d",&Len);
float x[Len],y[Len],sig[Len];

现在通常我认为数组不能在运行时用变量初始化。然而,据称这确实可以编译。问题是我又不知道编译器。是否存在合法的 C 变体?我使用的编译器 IAR C 不喜欢它。

我还看到从 1 而不是 0 索引的数组,这表明它最初是从 Pascal 之类的东西翻译过来的。有意见吗?

最佳答案

Now normally I believe that arrays cannot be initialized during runtime with a variable.

在 C99 标准之前就是如此。它在 C++ 中也是非法的(尽管某些编译器,例如 gcc,提供此扩展)。

Is there a C variant where this is legal?

任何 C99 编译器都可以。

I am also seeing arrays indexed from 1 rather than 0

这也可以,只要您可以很好地分配额外的元素,并且不使用索引为零的元素。

注意:由于访问超出数组末尾的元素是未定义的行为,因此无效的程序可能会在测试运行中正常工作并产生所需的结果。如果您怀疑某些数组索引可能相差一,请考虑在内存分析器(例如 valgrind)下运行您的程序,以查看程序是否存在与无效内存访问相关的隐藏错误。

关于c - 奇怪的 C 代码 - 动态数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27103318/

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