c语言地址小实验

c语言地址小实验

gcc忽略报警:-w,直接编译看看吧

c语言地址小实验

结果:

c语言地址小实验

地址是八个字节大小,ok

实际只有12字节(大多数64位计算机都是48位实际地址),ok

但是为什么按16进制输出没有7ffd?

因为地址是一个long型变量,%x格式不足以覆盖它的全部位数(只覆盖4个字节),因为是小端存储所以高地址的高位没读到,这个在警告中其实也有体现

改为lx输出就正常了,但是还是会警告,因为我们这里就是忽略了数据类型的一个(违规)操作,所以只能这样了

c语言地址小实验

 

c语言地址小实验

再来看一下别的报错,

%.2p那里画蛇添足了,直接写%p就行

sizeof返回一个size_t类型的数据,64位定义为无符号长整型,按提示改为ld就好了

c语言地址小实验

最后剩下一个无法解决的报错,收工