C 在不同的场景中,将一个阵列复制到另一个阵列的最可靠、最优雅的方法是什么?
在我发现这个非常有用的Q/A:,我开始怀疑,对于我在C 在不同的场景中,将一个阵列复制到另一个阵列的最可靠、最优雅的方法是什么?,c,arrays,C,Arrays,在我发现这个非常有用的Q/A:,我开始怀疑,对于我在C中经常遇到的如何在数组之间交换数据的问题,是否有一个等价物 以下是我最感兴趣的一些案例: 相同类型到相同类型,大小相同(例如字符到字符) 一种类型转换为另一种类型,大小相同(例如,const char转换为unit8) 将较小的转换为较大的(例如测试[7]到测试[70]) 我的上述方法如下-例如: array1=array2 memcpy(&array2,array1,sizeof(array1)) 第十八个rmemcpy也是,或者通过元素的
C
中经常遇到的如何在数组之间交换数据的问题,是否有一个等价物
以下是我最感兴趣的一些案例:
array1=array2
memcpy(&array2,array1,sizeof(array1))
memcpy
也是,或者通过元素的for循环#define SIZEOF_ARRAY = 16;
uint8 array2[SIZEOF_ARRAY+1];
const char array1[SIZEOF_ARRAY+1] = {"test"};
memcpy(&array2,array1,sizeof(array1))
首先,您的案例1没有意义,无法复制到
const
数组。它是恒定的
然后,对第二种情况的代码进行两次挑剔:
&
sizeof
不是函数,因此不需要括号请注意,这样做有点危险,您必须确保大小确实匹配。首先,案例1没有意义,您不能复制到
常量
数组。它是恒定的
然后,对第二种情况的代码进行两次挑剔:
&
sizeof
不是函数,因此不需要括号请注意,这样做有点危险,您必须确保尺寸确实匹配。感谢
const
的提示,更正了它。您的简化形式非常好,在我的例子中,我确信它的大小,但是这样的代码不应该总是被保护以防止不好的使用吗?你自己会用另一种方法来达到同样的效果吗?感谢const
的提示,更正了它。您的简化形式非常好,在我的例子中,我确信它的大小,但是这样的代码不应该总是被保护以防止不好的使用吗?您自己是否会使用其他方法来实现相同的结果?是否可以通过指针而不是memcpy来使用setup array2到array1值?我猜不是,因为array1是常量。是这样吗?是否可以通过指针而不是memcpy使用setup array2到array1值?我猜不是,因为array1是常量。是这样吗?
memcpy(array2, array1, sizeof array2);