函数的返回值也可以是引用,例如:
double heights[] = {10.9, 18.7, 28.9, 67.44};
double & setHeights(int i)
{
return heights[i];
}
int main (int argc, const char * argv[])
{
cout<<heights[0]<<endl;
setHeights[0] = 20.7;//调用setHeights函数,返回heights[i]的引用,然后进行赋值
cout<< heights[0] <<endl;
}
如果函数返回的是引用,最好不要是局部变量,局部变量出了花括号有可能被回收
int & sum(int a, int b) { int temp = a + b; // 21 return temp; } int main(int argc, const char * argv[]) { int n = sum(10, 11); int &f = sum(10, 11); cout << f << endl; cout << n << endl; int *p = NULL; int ⁡ return 0; }
上面的代码中,如果先输出f会是21,如果后输出f,其值就不定了,因为cout会动缓冲区内存,f被冲掉了
另外引用和指针的区别
--引用没有独立的存储空间,指针有自己独立的存储空间
--引用只能在定义时初始化一次,之后不可变;而指针式可变的
--引用不能为空,指针可以为空
--sizeof引用-得到的是所引用变量的大小;sizeof-指针得到的是指针的大小
--引用和指针的自增++自减--运算含义不一样