在arduino编程中复制数组的内容

时间:2016-01-19 17:11:15

标签: arrays arduino

这可能是一个简单的问题,但我无法找到如何做到这一点。我为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;

我只想在我的代码中更改一个位置,前三个数组中哪一个我希望我的新数组从中获取值。有人对如何做这个有任何建议吗?

2 个答案:

答案 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函数。

玩得开心!