for循环中的数组,C99

use*_*527 3 c arrays loops for-loop

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

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

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

所以我被告知仅在此范围内声明数组是合法的.但是它会尝试在最后存储1000个阵列,这是我不想要的吗?我是初学者,所以我不明白这些块真正做的细微差别.

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

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

Set*_*gie 7

但是它会尝试在最后存储1000个阵列,这是我不想要的吗?

不,在每次迭代开始时,将分配一个新数组,并且,由于数组在迭代结束时超出范围,此时它将被解除分配,因此一次只存在一个数组.

这是自动变量的点(该数组是).在声明它们的范围的末尾(通常但不总是用大括号分隔),它们会自动释放.