c语言地址小实验
gcc忽略报警:-w,直接编译看看吧
结果:
地址是八个字节大小,ok
实际只有12字节(大多数64位计算机都是48位实际地址),ok
但是为什么按16进制输出没有7ffd?
因为地址是一个long型变量,%x格式不足以覆盖它的全部位数(只覆盖4个字节),因为是小端存储所以高地址的高位没读到,这个在警告中其实也有体现
改为lx输出就正常了,但是还是会警告,因为我们这里就是忽略了数据类型的一个(违规)操作,所以只能这样了
再来看一下别的报错,
%.2p那里画蛇添足了,直接写%p就行
sizeof返回一个size_t类型的数据,64位定义为无符号长整型,按提示改为ld就好了
最后剩下一个无法解决的报错,收工