一个char和一个short挨着,为什么地址差了7个字节?解决方案
一个char和一个short挨着,为什么地址差了7个字节?C/C++ codeint main(){char a3short ss4printf(%p,%
一个char和一个short挨着,为什么地址差了7个字节?
C/C++ codeint main(){ char a=3; short ss=4; printf("%p,%p\n",&a,&ss); return 0;}
运行了好几遍,结果都像是这样
002EF69F,002EF698
0013F79F,0013F798
0014F927,0014F920
我的问题是:
(1)为什么a的地址没有从4的倍数开始? 我没有修改pack属性
(2)一个char和一个short挨着,为什么地址差了7个字节?
[解决办法]好像没有规定必须放在一起吧。我这还差了15个字节呢。
0081FF63,0081FF54
[解决办法]。。你这是什么编译器了,我这里显示的都是从4的倍数开始,地址差了4个字节
[解决办法]0012FF78, 0012FF74
[解决办法]单个独立的变量(局部变量),其地址和变量定义的顺序没有直接的关系。各个编译器都有不同的实现。就VC来说
,debug模式和release模式也不相同。
[解决办法]这是很正常的。如果是一个数组,那么前后两个元素的地址,则一定是连续的,楼主不妨试试。
[解决办法]没有原因。