回复 5楼 peach5460
谢谢,请教了其他的人,他们给我这样解释的,但是仍有疑问,请再帮我看看行吗?谢谢!
1 temp是子函数定义的一个临时变量,用来存储fun函数计算的结果;
2 实际上,函数在运行的时候,参加运算的参数是放在堆栈中的,(假如说这个运算是一个复杂的函数),每运行一次函数的原型结果会放在栈顶,该结果会成为下一步运算的一个因数,直到函数运行完毕;
3 2中最后一次运行的结果会放在堆栈中,程序会自动设定一个隐藏的临时变量表示,然后再将此临时变量传递给temp,temp实际是临时变量的引用;
4 但temp的结果返回到主函数以后,temp的内存(也即临时变量的栈中的内存)将会被释放,但是如果按照这种解释,下面的程序又解释不了?
#include "iostream"
int main()
{
int n=2;
int f(int);
f(n);
std::cout<<f(n)<<std::endl;
return 0;
}
int f(int i)
{
int temp;
temp=i*i;
std::cout<<&temp<<std::endl;
return temp;
}
运行结果为:
0012FF20
0012FF1C
4