c++的函数引用

来源:百度知道 编辑:UC知道 时间:2024/05/28 13:26:36
#include <iostream.h>
int &fun()
{
static int n;

return n;
}
void main()
{
fun()=10;

}
请问执行return 返回值时把值放在寄存器里还是内存里(这个返回的是引用)???
如果返回的值不是引用那么放在寄存器中还是内存里????

是不是引用都放在调用堆栈里面

是放在内存里面的。你学了Win32汇编就会知道,函数返回值一般是放在AX里面的,或者是一个指针返回到AX里面。(API是这样的)

这里要明白一点:fun()的返回值为静态变量n的引用。
那么何谓引用,即:另一个变量的别名,其本身不占空间。因而,return返回的值放在哪里就取决于变量n放在哪里。静态变量放在静态存储区中,因而返回值也在其中,是同一个空间。
对于本题而言,返回值不是引用则出错(此时需要临时变量);
另外,当你去掉fun()函数中的static后,运行结果也是错误的(此时为局部变量)。

返回静态变量的引用,也就是别名.
静态变量相当于全局变量.但对于定义于函数内部的静态变量,其作用域为函数内部,对于函数外部不可见.全局变量,堆,栈中的变量都是存储于内存中的.

引用类型实际上可以当成指针,但是比指针要方便和安全,引用的实现和指针没什么差别,只不过编译器保证了不存在空引用,使用起来也更方便,不需要复引用。

内部类型还有指针、引用类型的返回值一般都是放在寄存器中的,用户自定义类型的返回值一般存储在内存中,存储的位置由调用者给出。