我有一个3d数组int main[N][N][N]
,我需要创建一个int buf[N][N]
的节点结构。
何时使用buf = main[index]
vs memcpy(buf,main[index],sizeof(main[index]));
安全?
答案 0 :(得分:2)
如果buf
是一个数组,那么它不是左值。如果它不是左值,你永远不能分配它(语法错误)。
答案 1 :(得分:1)
如果buf是指针并且您不需要副本,则可以安全地使用=
。如果buf是已经分配的数组或指针,如果确实需要副本,通常会执行memcpy
答案 2 :(得分:0)
如果要在C中复制连续的内存部分,memcpy
是安全的,并且可能比逐个元素复制更有效。 memcpy
可能更快的原因是因为可以使用各种CPU技巧来复制大于机器字大小的块。但情况并非总是这样,因此分析将是您比较两个选项的唯一方法。
此外,您可能想要比较基于for循环的副本而不是直接赋值,因为对数组变量的赋值无效C.