首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个char和一个short挨着,为什么地址差了7个字节?解决方案

2012-05-20 
一个char和一个short挨着,为什么地址差了7个字节?C/C++ codeint main(){char a3short ss4printf(%p,%

一个char和一个short挨着,为什么地址差了7个字节?

C/C++ code
int 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模式也不相同。
[解决办法]
这是很正常的。如果是一个数组,那么前后两个元素的地址,则一定是连续的,楼主不妨试试。
[解决办法]
没有原因。

热点排行