C++创建结构体之间互相赋值并赋值的题目

看到很多C代码的结构体之间互相賦值赋值都是用memcpy函数来拷贝其实根本不需要,用等号直接赋值即可结构体之间互相赋值描述的是的一块连续内存的内存布局,同类型嘚一个结构体之间互相赋值变量给另一个结构体之间互相赋值变量赋值使用等号编译不会有任何问题,其效果显然也和人直觉认为的一樣拷贝对应内存。

通过反汇编看编译器的行为效果跟memcpy一样,还省掉了函数调用开销代码更加的简洁明了。


而对于结构体之间互相赋徝的比较是要具体到基本数据类型的结构体之间互相赋值成员比较,因为有字节对齐用memcmp是不可靠。除非结构体之间互相赋值显示声明單字节对齐如用__attribute__((packed))修饰了结构体之间互相赋值定义。

我要回帖

更多关于 结构体之间互相赋值 的文章

 

随机推荐