&&引用&&

函数的返回值也可以是引用,例如:

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 &af;
    return 0;
}

上面的代码中,如果先输出f会是21,如果后输出f,其值就不定了,因为cout会动缓冲区内存,f被冲掉了

另外引用和指针的区别

--引用没有独立的存储空间,指针有自己独立的存储空间

--引用只能在定义时初始化一次,之后不可变;而指针式可变的

--引用不能为空,指针可以为空

--sizeof引用-得到的是所引用变量的大小;sizeof-指针得到的是指针的大小

--引用和指针的自增++自减--运算含义不一样

原文地址:https://www.cnblogs.com/xyzaijing/p/3613349.html