这可能是一个简单的问题,但我无法找到如何做到这一点。我为arduino编程,我试图将内容从一个数组复制到另一个数组。我以前在python中进行了编程,并希望这可行,但事实并非如此。
int myArray1[] = {0, 2, 4, 5, 7, 9, 11};
int myArray2[] = {0, 2, 3, 5, 7, 8, 10};
int myArray3[] = {0, 3, 5, 6, 7, 10};
int newArray[] = myArray2;
我只想在我的代码中更改一个位置,前三个数组中哪一个我希望我的新数组从中获取值。有人对如何做这个有任何建议吗?
答案 0 :(得分:0)
你必须迭代数组,所以
Declare the array here (see answer text)
byte i;
for (i=0; i<(sizeof(myArray2)/sizeof(int)); i++)
{
newArray[i] = myArray2[i];
}
现在,为newArray的声明。最好的事情是创建一个静态的#34;分配变量:所以你应该写
int myArray1[] = {0, 2, 4, 5, 7, 9, 11};
int myArray2[] = {0, 2, 3, 5, 7, 8, 10};
int myArray3[] = {0, 3, 5, 6, 7, 10};
int newArray[7];
大小应该是您需要的最大尺寸。
如果静态分配不是一个选项,你可以动态地分配它:
int* newArray= NULL;
...
newArray = new int [sizeof(myArray2)/sizeof(int)];
... use the array ...
delete[] newArray;
在这种情况下,你必须在使用它时删除数组(并且你必须在新的new
之前销毁它。)
我强烈建议你采用第一种方法
答案 1 :(得分:0)
从描述中,听起来你可以使用指向数组的指针来选择使用哪一个。
声明一个指针:
int *use_array;
然后将一个现有数组分配给它:
use_array = my_array1;
然后使用use_array
引用数组use_array[2] = ... // whatever
非常,非常,小心不要跑掉阵列的末尾。如果数组实际上是可变长度,那么你有更多的簿记要做。这是非常低级别的东西,但标准C。
如果确实想要移动字节而不是更改单个指针,那么请查看AVR libc库中的memcpy
函数。
玩得开心!