/**************************************************************************
C++程序中的每一个元素都是有地址的,不管什么时候运行一个程序,都是首先把它装入(一般从磁盘装入)计算机内存,因此程序中的所有元素都驻留在内存的某处。我们从一个简单的C++程序来查看这些元素在内存的分布情况。
***************************************************************************/
//一个简单查看变量和函数在内存中的地址
#include
usingnamespacestd;
//定义三个全局变量
intboy,girl,man;
//定义一个函数
voidfun()
{
//函数内部定义三个局部变量
inta,b,c;
//通过运算符分别打印三个变量的地址到显示屏上
//(long)是一种类型转换便于阅读,这个类型转换不是必须的,如果没有,地址将以十六进制形式打印
coutfun()函数中局部变量a的地址(long)aendl;
coutfun()函数中局部变量b的地址(long)bendl;
coutfun()函数中局部变量c的地址(long)cendl;
}
intmain()
{
//main函数中定义三个整型变量
intx,y,z;
//通过运算符分别打印各个变量和函数的地址到显示屏上
cout全局变量boy的地址(long)boyendl;
cout全局变量girl的地址(long)girlendl;
cout全局变量man的地址(long)manendl;
coutendl;//输出换行分隔开以便查看
coutfun()函数的地址(long)funendl;
coutendl;//输出换行分隔开以便查看
fun();//调用fun()打印函数内的局部变量的地址
coutendl;//输出换行分隔开以便查看
coutmain()函数中变量x的地址(long)xendl;
coutmain()函数中变量y的地址(long)yendl;
coutmain()函数中变量z的地址(long)zendl;
system(pause);
return0;
}
程序在我的电脑运行的结果如下:
可以看到在main()函数的内部和外部定义的变量以及在fun()函数内部定义的变量存放在不同的区域,同样,fun()函数也有它自己的区域,在内存中代码和数据一般都是分开存放的。
另一个值得注意的有趣事情是:相继定义的变量在内存中是连续存放的,它们根据各自的数据类型所要求的字节数分隔开,这个例子中的变量都是使用整形,所以它们分别都是按4个字节分隔开。