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

变量类型在内存中有关问题

2012-06-13 
变量类型在内存中问题#includeiostreamusing std::coutusing std::endlusing std::hexusing std::dec

变量类型在内存中问题
#include<iostream>
using std::cout;
using std::endl;
using std::hex;
using std::dec;
int main(){
long *pnumber=NULL;
long number1=55,number2=99;
pnumber=&number1;
*pnumber+=11;
cout<<endl
<<"number1="<<number1
<<" &number1="<<hex<<pnumber;
pnumber=&number2;
number1=*pnumber*10;
cout<<endl
<<"number1="<<dec<<number1
<<" pnumber="<<hex<<pnumber
<<" *pnumber="<<dec<<*pnumber;
cout<<endl;
return 0;
}

这段代码运行后,&number1和pnumber相差4个字节,为什么啊??不理解

[解决办法]
这个不一定哦,不一定是差4个字节的,因为你后面pnumber改变指向了,后面pnumber指向了number2,number2的地址与number1的地址肯定是不一样的,32位机上它们相差4的倍数字节,你电脑上相差4个字节是正好在栈中将2个局部变量空间分配在一起了
[解决办法]
我这里的相差4,这个根编译器和环境相同,比如机器64位的又不一样
[解决办法]
这2个局部变量地址要看系统是怎么分配的,不一定是4也不一定是12,你只要知道局部变量保存在栈中就行了

热点排行