如果用 printf 打印 直接打印结构体 ,我一直以为打印出来的就是第一个成员的内容 ( 排除虚表)
问题:(是32位,类型大小都一样,没有那个内存对齐什么的)
(图1)
(图1)看出 用printf打印 对象名 直接出 第一个成员 ,但是 如果这样打印 , 结果不一样 (图2)
(图2)
发现 打印 v1 依旧是 &val 地址 ,但是在第一条语句中 &val 是 m_age 的值(这里我多次试过不同的m_age值)
就是说偏移了4个字节 直接到了 m_age上 , 我知道 printf 的参数是从右往左算的 (应该是吧,我记得我学过汇编,有一课是看函数的堆栈图,参数都是从右往左 push 进去 的, 汇编就学了点皮毛 ,应该是这样,可是这对打印结果有什么影响呢?这里我就不明白了)
但是我换个 方式打印 如(图3)
(图3)
这个合乎我的意料(但不知道这样为什么就对了)