C++ 教程源码求指导~

2019-07-20 23:52发布

QQ截图20160129145540.png
如上代码程序是<<C++ primer plus>>教程源码,小弟心中有个疑惑,恳请大神指导~
我记得我在学习C的过程中,公司同事跟我说过:在被调用函数中:如果函数的返回值是某个局部变量,或者某个局部变量的地址,那么这个返回值是不确定的,因为局部变量时放在栈内存中的,如果退出这个函数,这个局部变量所在的内存是不确定的.
现在在学习C++的过程中,我想请教大神帮我指点下~
问题1:在C编译器环境下,这句话是正确的吗???
问题2:如果将C编译环境换为C++编译环境,那么这句话还能同样成立吗?如果成立的话,那上面的这段程序该如何解释???
恳请大神指教~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
ianhom
1楼-- · 2019-07-21 05:31
 精彩回答 2  元偷偷看……
夜猫煮茶
2楼-- · 2019-07-21 05:35
构造和析构?
emWin
3楼-- · 2019-07-21 07:41
你同事口述不精确,但是有意义的。
楼主位返回的地址不属于局部变量,返回是正确的。
吴海
4楼-- · 2019-07-21 09:21
函数返回的始终是一个确定的值,而变量不是值,只是一个称呼。
ofourme
5楼-- · 2019-07-21 10:23
值传递的话绝对没问题,地址传递的话看所在地址是什么。new生成的对象所在地址在堆里,传递这个地址就没问题。如果对象是在栈里的,函数返回后会释放栈空间给中断函数等使用,这时候对象地址的内容就有可能被改变。
liuchang
6楼-- · 2019-07-21 14:19
 精彩回答 2  元偷偷看……

一周热门 更多>