常引用

普通的引用:

1. int a=10;

    int &b=a;//b就是a,a就是b,b相当于a的别名,可以通过修改b的值来改变a的值

    b=20;

    cout<<"a="<<a<<endl;//输出的结果是20,b的值被改变,a的值相应地也被改变

2.int &a=10;//非法!引用的本质是给内存起别名。而10是一个字面量,是不放在内存里面的,因而没有地址,即:(&10)是错的,压根不存在。                                                                                                                                                                                          

常引用:

1. int x=10;

    const int &y=x;//y是x的常引用,y本身是const int类型,其值不能被修改

    y=20;//非法!y的值不允许修改!

    x=30;//合法,x的值可以改变

    cout<<"x="<<x<<endl;

2.const int &a=10 //合法,C++编译器自己分配了一块int的内存空间,然后用a指向这块内存。

//常引用通常被用来传参,使得参数具有只读属性而不能被修改

例如:

struct Teacher

{

    int age;

    char name[64];

};

void fun(const Teacher &temp)

{

    t.age=30;//非法!常引用的值不能被修改

    cout<<"age:"<<temp.age<<endl;

    cout<<"name:"<<temp.name<<endl;

}

void main()

{

    Teacher t;

     t.age=25;

     strcpy(t.name,"Li");

    fun(t);

}

原文地址:https://www.cnblogs.com/jswu-ustc/p/8303529.html