总结指针和引用的区别

一:什么是引用
引用就是给一个已经定义的变量起一个别名,并没有定义新的变量;
引用的格式为:类型& 引用变量名 = 已定义过的变量名;

    int a = 1;
    int& b = a;
    cout << &a << endl;
    cout << &b << endl;

这里写图片描述

const引用
①用常引用引用变量,变量值可修改,常引用不能修改。

    int a = 1;
    const int& b = a;
    a = 2;//a改变b的值也会改变
    //b = 3;

②只有常引用才可以引用常量。

    const int a = 1;
    //int& b = a;
    const int& b = 2;

③引用的类型与已经定义的变量类型不同时,会生成临时对象,也就是说引用的是具有常性的临时变量,所以必须用常引用。

    double a = 1.0;
    //int& b = a;
    const int& b = a;

引用作为参数:
如果形参为引用类型,则形参是实参的别名,会更加高效,如果不希望改变参数的值,尽量使用常引用传参。

引用作为返回值
不要返回一个临时变量的引用,因为出了作用域,临时变量就不存在了;
如果返回对象出了当前函数的作用域依旧存在,则最好使用引用返回,因为这样更高效。

二:指针和引用的区别
1.指针是一个变量,这个变量存储的是一个地址,指向内存的一个存储单元,所以指针是一个实体;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名。
2.引用只能在定义时初始化一次,之后不能指向其它变量;指针变量的值可变。
3.引用必须指向有效的变量,指针可以为空。
4.sizeof引用得到的是所指向的变量的大小,而sizeof指针是求指针变量的大小。
5.引用++指的是变量的大小加一,指针++指的是指向下一个空间。
6.引用比指针更安全(野指针),指针比引用更灵活。
从底层看,指针和引用是一样的。

猜你喜欢

转载自blog.csdn.net/han8040laixin/article/details/81486784