我问过一个关于在 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/