考虑复制一个不需要特殊复制语义的简单结构。
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
将该结构视为连续的字节数组,并仅复制所有字节。因此,它总是会复制成员后面的填充字节。
=
只需要复制成员即可。它可能会也可能不会复制填充。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)