例如,如果我有一个小功能:
int sum(int a, int b)
{
int result = a+b;
return result;
}
Run Code Online (Sandbox Code Playgroud)
这里result是一个局部变量,根据我的理解,它应该只存在于函数的执行时间.该函数的调用者如何能够检索sum()函数的返回值,该函数只是局部变量的值result?只是想知道函数内声明的局部变量的值是如何返回给调用函数的.我知道这发生在堆栈中,但我想知道它是如何发生的.
return result;不返回的result变量,则返回值的的result变量.所以result当函数返回时它会消失,我们需要的只是它的值.
返回值经常放在寄存器而不是堆栈中,但在某些体系结构中可能会被压入堆栈.cdecl调用样式的这个页面提供了一个很好的概述.请注意,详细信息因调用约定和平台而异.
但关键的问题仍然是第一款:它的价值的result,不result,主叫方接收.