c变量等于或memcpy

时间:2011-10-26 17:17:00

标签: c

我有一个3d数组int main[N][N][N],我需要创建一个int buf[N][N]的节点结构。

何时使用buf = main[index] vs memcpy(buf,main[index],sizeof(main[index]));安全?

3 个答案:

答案 0 :(得分:2)

如果buf是一个数组,那么它不是左值。如果它不是左值,你永远不能分配它(语法错误)。

答案 1 :(得分:1)

如果buf是指针并且您不需要副本,则可以安全地使用=。如果buf是已经分配的数组或指针,如果确实需要副本,通常会执行memcpy

答案 2 :(得分:0)

如果要在C中复制连续的内存部分,memcpy是安全的,并且可能比逐个元素复制更有效。 memcpy可能更快的原因是因为可以使用各种CPU技巧来复制大于机器字大小的块。但情况并非总是这样,因此分析将是您比较两个选项的唯一方法。

此外,您可能想要比较基于for循环的副本而不是直接赋值,因为对数组变量的赋值无效C.