下面是一个简单函数的定义,它返回一个整数从函数返回值 - 为什么它有效?
int myFunc()
{
int localVar = 99;
return localVar;
}
,并在主称为
int main()
{
int y = myFunc();
cout << y << endl;
return 0;
}
因为预计这工作。我想知道为什么? localVar
是一个局部变量,它的值分配在堆栈中。一旦函数结束,它就会超出范围。所以,localVar
将在通话中超出范围int y = myFunc();
它/它为什么仍能够返回正确的值?
那么,如果按照您的想法返回值,那么返回值的目的是什么?因为函数'int myFunc()'的返回类型,所以它会返回 – rullof
。它允许你传回一个int值。变量'localVar'确实超出了'main()'的范围,但是localVar没有被使用,'y'是。 – ryyker
该值不是在堆栈中返回,而是在寄存器 –