c - for循环中的数组,C99

标签 c arrays loops for-loop

我问过一个关于在 for 循环中声明数组的问题,例如

for(i=0;i<=1000;i++){
    float arrayone[(length[i])];
    do a bunch of other stuff
}

基本上,我正在尝试创建一个数组,其长度可以根据程序的执行步骤而变化。我不想永久保存数组数据(如 arrayone[][]),因为它很大而且有很多步骤。

所以我被告知像这样只在这个范围内声明数组是合法的。 但它会尝试在最后存储 1000 个数组副本,这是我不想要的吗?我是初学者,所以我不了解这些 block 的真正作用的细微差别。

对我来说,另一种方法是在循环之外创建一个数组,该数组具有所需的最大长度,并在每一步都覆盖它。

编辑:数组的用途是:我有一个全局数组。循环中的数组使用该全局数组填充函数结果,以节省计算。数组被操纵,...,...,最后用于更改全局数组。然后就不再需要它们了。

最佳答案

But will it try to store 1000 copies of the array by the end, which I don't want?

不会,在每次迭代开始时会分配一个新的数组,而且,由于数组在迭代结束时超出作用域,那时它会被释放,所以一次只有一个数组存在.

这就是自动变量(即数组)的意义所在。在声明它们的范围的末尾(通常但不总是用大括号分隔)它们会自动释放。

关于c - for循环中的数组,C99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113307/

相关文章:

c - 套接字客户端/服务器输入/输出轮询与 Linux 中的读/写

c - 如何在 linux 用户空间应用程序中获得最精确的时钟?

c - 如何在 C 中将十六进制连接到字符串

c - 为结构中的结构数组动态分配内存

java - 循环输入 if 语句

c - 在 C 中的指针结构中访问指针数组

c - 减压没有按预期工作

Objective-C Bridge NSArray 崩溃

java - 更改基本 Java 动画中的颜色

java - Core Java 打印两个数组中的唯一元素