xunlizhan 发表于 2017-8-20 21:48:02

各位大哥帮我看看,关于结构指针强制转换为整型指针的...

为什么不是a=0x0201;b=0x0403;c=0x0605 ?问题出在哪里?

wenyangzeng 发表于 2017-8-20 22:04:25

你那个test_t结构中,应该将uint16_t a45放在最上面,让数据对齐。

andeyqi 发表于 2017-8-20 22:46:52

应该是你结构体对齐的原因造成的,test_t结构体在内存中的布局应该是这样的{0x01,0x02,0x03,0x00,0x04,0x05,0x06,0x00}造成的.

andeyqi 发表于 2017-8-20 22:48:03

默认应该是四字节对其的

Inc_brza 发表于 2017-8-21 01:09:55

本帖最后由 Inc_brza 于 2017-8-21 01:14 编辑

结构体会对结构体内元素最大的做对齐单元(未使用对齐指令), 然后你这玩意是小端格式的,所以出现这样的结果

xunlizhan 发表于 2017-8-21 06:31:56

明白了,谢谢各位!

LoveMCU001 发表于 2017-8-21 11:11:18

结构型指针uint16 *应该是偶数对齐的,每个变量的起始地址应该是偶数

toofree 发表于 2017-8-21 11:43:20

:)楼上几层都解释过了,你可以看一下结构体内部各元素的地址是多少

没事逛荡 发表于 2017-8-22 09:19:57

或者强制1字节对齐
页: [1]
查看完整版本: 各位大哥帮我看看,关于结构指针强制转换为整型指针的...