常引用
普通的引用:
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);
}