在我发现这个非常有用的Q / A:How to initialize all members of an array to the same value?之后,我开始想知道,如果我在C
中如何在数组之间交换数据的问题存在等效问题。
这些是我最感兴趣的一些案例:
我对上述方法的方法就是这样 - 例如:
array1 = array2
memcpy(&array2,array1,sizeof(array1))
memcpy
,或for for循环元素我希望这里有人可以提供或知道在哪里找到一个精细的蒸馏示例 - 不同的数组交换例程的集合。不是,我不能让它自己工作,只是,如果解决方案是稳定的,那就是这种持续的不安全感。
哦,我真的讨厌那些for循环,分别分配每个元素。对我来说,使用它们的唯一原因是在进行交换之前需要一些额外的处理 - 例如首先递增转移的值,或类似的东西。
如果这与Q / A-Style不相符,我会很高兴,如果有人可以确认或改进我的尝试,例如2:
#define SIZEOF_ARRAY = 16;
uint8 array2[SIZEOF_ARRAY+1];
const char array1[SIZEOF_ARRAY+1] = {"test"};
memcpy(&array2,array1,sizeof(array1))
答案 0 :(得分:4)
首先,您的案例1没有意义,您无法复制到const
数组。这是不变的。
然后,你的代码为第二种情况的两个挑剔:
&
。sizeof
不是函数,因此不需要括号。因此:
memcpy(array2, array1, sizeof array2);
请注意,执行此操作有点危险,您必须确保尺寸确实匹配。