【发布时间】:2014-04-26 16:51:26
【问题描述】:
考虑复制一个不需要特殊复制语义的简单结构。
struct A
{
char i
int i;
long l;
double b;
//...maybe more member
}
struct A a;
a.c = 'a'; //skip other member just for illustrate
struct A b;
memset(&a, 0, sizeof(a));
b.c = a.c;
//...for other members, the first way to assign
memcpy(&b, &a, sizeof(b)); //the second way
b = a; //the third way
这 3 种方法做同样的事情,而且似乎所有方法都是正确的。我曾经使用 'memcpy' 来复制简单的结构,但现在似乎 '=' 可以做同样的事情。那么使用memcpy和'='有什么区别吗?
【问题讨论】:
-
memcpy将复制成员之间的填充。 -
memset: memset(对象的地址,设置字符,大小) -
感谢@BLUEPIXY,已编辑。
-
@Barmar 和
=可能会也可能不会;这取决于实施。 -
memcpy()还可以方便地一次性复制结构数组。