分类：电脑/网络-程序设计-C/C++
问题：函数返回值类型的问题请问int&fn(intn){}的返回值类型 
请问
int& fn(int n){}
的返回值类型是什么,如果是地址类型,那么和
int *fn(int n){}有什么区别吗?
回答：int& f(int n){}和int *fn(int n){}完全不同，前者返回的是引用，后者返回的是指针
比如:
int a = f(...);
int *b = fn(...);
int c = a + (*b);
cout << c << endl;
两者具很大吧。

其实主要是分辨 int& f1(..)和int f2(..)的区别。
比如:
int a = f1();
int b = f2();
int c = a + b
cout << c << endl;
看起来没区别吧，实际区别很大。
由于f1返回的是引用，所以a指向f1中返回变量的地址，但返回变量的值并没保存于a中
f2则不同，返回变量的值保存于b中
所以两者的差别在效率上的差异。
注意：f1中返回引用的那个变量千万不要在栈中分配，不然在f1生命周期借宿后，它的地址将变得无效