C语言中判断两个结构体是否相等

字数 275阅读 1601

不能用函数memcpy来判断两个结构体是否相等:memcmp函数是逐个字节进行比较的,而struct存在字节对齐,字节对齐时补的字节内容是随机的,会产生垃圾值,所以无法比较。

结构体的对齐概念

结构体变量中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。

结构体的补齐概念

在经过对齐原则分析后,检查计算出的存储单元是否为所有元素中所占内存最大的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。

推荐阅读更多精彩内容

  • 作者:Eric S. Raymond转自:https://github.com/ludx/The-Lost-Art...
  • 结构体有名定义 无名定义 结构体嵌套定义 结构体内存对齐 结构体成员初始化 结构体变量引用 结构体的有名定义:直白...
  • ios中不一定需要c构建协议。但是总体来说用c语言来说相对对数据处理友好方便一些,不像oc那样笨重,毕竟c是做底层...
  • 致 即将离开家人,远走他乡的人 大胆的去实现你积蓄了多年的力量想要实现的梦想,在他乡,努力向上,积极前进。只要是为...
  • 当人们还在开始买化妆品美肤、祛斑,给自己脸上涂抹各式各样化学物质时,绿色有机健康的丝雨春已经开始渐渐的抢占市场,而...