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