- 函数返回值类型的问题请问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生命周期借宿后,它的地址将变得无效