对C++中引用(&)的理解

  之前在编写需要修改指针内容的函数时,一般采用双指针的写法,即函数参数中写"**p",然后用"&p"将存储p指针的地址输入进去,这样的方法易于理解,但是在程序上会显得非常麻烦,易读性不强。

  而408王道数据结构中的示例代码也是采用引用(&)的方式,故metoo

一.引用的概念

  "引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间"

  定义略显模糊,引用如果是给变量取了一个别名,那为什么可以向函数中传递实参?(√)

二.在函数参数中的使用

#include <stdio.h>

void swap(int& left,int& right)
{
    int tmp = left;
    left = right;
    right = tmp;
}
int main()
{   
    int left=1;
    int right=666;
    printf("before swap left: %d right : %d\n",left,right);
    swap(left,right);
    printf("after swap left: %d right : %d",left,right);
    return 0;
}

  如上代码,在传参时也就是说执行了 int& left = left;int& right = right;所以说swap函数中的left相当于是main函数中的left的一个别名,两者所用的内存以及值都是相同的!!!悟了

三.引用的注意事项(与指针的不同)

  • 不存在空引用。引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化。指针可以在任何时间被初始化。

 

posted @ 2023-04-24 09:02  正方形的被子  阅读(460)  评论(0)    收藏  举报