WHO CAN HELP??
学C++过成中遇到的一个问题,请教教我。
C++中调用函数时的栈内存的结构是这样的
函数参数
返回地址
函数内部变量,对象
当函数结束的时候,栈指针应该是返回到返回地址,这时候函数内部变量对象被清除,但函数参数好象并没有被清除,想问问是怎么回事?函数参数要到什么时候才被清除?
问题点数:0、回复次数:5Top
1 楼goodluckyxl(被人遗忘的狗)回复于 2004-11-03 12:26:43 得分 0
参数分为实参和型参
传入后 实参是不会被清除 除非你手动在函数体内清除 那需要引用传递
一般被清除的是行参 和 局部变量
值传递实参传入后会产生临时对象既为行参 你所有的操作基于这个临时对象产生
当函数调用完毕 临时对象 销毁你操作也就随之无意义 除非返回这个对象
另外 栈上分配的局部数组
是不能被返回的 因为 数组只能返回地址 而局部对象在函数调用后销毁
返回的地址也是无用的
Top
2 楼daylove(爱晶如梦)(昨夜西风调碧树,独上高楼,望尽天涯路……)回复于 2004-11-03 12:42:11 得分 0
楼上说的好,支持一下>.Top
3 楼lkforever1006(风过无痕)回复于 2004-11-04 11:26:24 得分 0
那么,
函数参数 -----------------------》这一块储存的是实参吗?
返回地址
函数内部变量,对象Top
4 楼clennpillo(于果)回复于 2004-11-04 13:26:28 得分 0
直接针对你提出的问题.
函数参数是调用者压进去的
所以
函数参数是由调用者清除的,被调用者管不着,前提是C约定
Top
5 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2004-11-05 13:33:18 得分 0
楼上是对的!参数实调用者的东西。Top




