C++中变量的地址什么时候是固定的?主函数中定义的变量,地址为什么是确定的,意思是可以通过地址找到变量

 我来答
xx8833
2011-10-01 · TA获得超过1629个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:490万
展开全部
声明变量有两种方式
一个是 int a;
一旦运行到声明这个变量的函数时,不是运行到这个语句,操作系统就会为他分配空间,变量a的位置就固定了,直到这个函数运行结束内存释放。
还有一种是
int *p = new int;
运行到这个语句,操作系统就会为你开辟空间,把指针p指向这个空间,这个空间系统为你保留,不会被他人使用,必须手动用Delete释放后,才能被其他程序使用。
追问
您说的第一种方式,如果这个变量是在main里声明,然后对这个变量赋值,把这个变量当作调用函数的实参。调用函数的过程中,变量的值改变了,但是返回main中还是原值。这个是为什么?这个变量不是局部变量么,这个地址和地址中变量的值是怎么变化的?谢谢
追答
被调用函数执行时会建立自己的数据空间,会把主函数中的a复制一份到自己的数据空间,返回时这个数据空间就被销毁。不是主函数中的a位置变了,而是被调用函数操纵的a只是原先a的一个副本,占用内存空间是不一样的。
如果要修改值,可以使用指向main函数中a的指针。
夏箫轩
2011-10-07 · 超过27用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:77.7万
展开全部
的变量的地址是确定的,主函数中的是全局变量,存放在静态存储区,所以地址确定
此外static静态变量也是存放在静态存储区,地址固定
其他的auto变量是放在栈中,是随机分配的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
派旺囡5139
2011-10-01 · TA获得超过470个赞
知道答主
回答量:538
采纳率:0%
帮助的人:212万
展开全部
每次运行后,进程空间是不一样的,因此地址也是不一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式