我想通过遍历一个for循环来填充数组。
假设我有:
int8 myArray[30] = {0}; // Declaring and initializing an array which contains maximum 30 elements
在for循环中向数组添加元素:
for (i = 0; i<5; i++)
{
myArray[0+(i*5)] = getNumberfromFunction1();
myArray[1+(i*5)] = getNumberfromFunction2();
myArray[2+(i*5)] = getNumberfromFunction3();
myArray[3+(i*5)] = getNumberfromFunction4();
myArray[4+(i*5)] = getNumberfromFunction5();
myArray[5+(i*5)] = getNumberfromFunction6();
}
循环的每个元素应按以下方式填充:
myArray [0] = getNumberfromFunction1();
myArray [1] = getNumberFromFunction2();
...
...
myArray [5] = getNumberFromFunction6();
myArray [6] = getNumberFromFunction1();
....
....
i = 0的第一圈,索引正确:
myArray[0] = ..
myArray[1] = ..
..
..
myArray[5] = ..
当i = 1时,问题开始
比起myArray [6],我将拥有myArray [5]。
foor循环中的第一个索引将始终被foor循环的最后一个索引覆盖。
有什么建议如何处理吗?
在for
循环的每次运行中,您都将六个值添加到数组中!因此,在随后的每次运行中,您都应将“偏移”计数增加i * 6(而不是i * 5):
for (i = 0; i<5; i++)
{
myArray[0+(i*6)] = getNumberfromFunction1();
myArray[1+(i*6)] = getNumberfromFunction2();
myArray[2+(i*6)] = getNumberfromFunction3();
myArray[3+(i*6)] = getNumberfromFunction4();
myArray[4+(i*6)] = getNumberfromFunction5();
myArray[5+(i*6)] = getNumberfromFunction6();
}
尝试这个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句