定义
int a = 10;
int &ref = a;
对ref更改即对a地址下的值进行更改 (与指针相同)
引用与函数
1. 引用创建时必须初始化 而指针可以初始化也可以不被初始化
- 引用一旦与某个对象建立了关联 在生命周期不能再引用其他对象 而指针可以任何时候转向其他对象
- 不允许存在空引用 不许与有效空间对象建立关联 c++允许存在空指针
- 引用是与地址间接产生联系 指针变量的内容就是地址 与地址产生直接联系
- 引用不占用内存空间 指针占用
- 不存在引用的引用 指针可以有引用
指针的引用
int *p; //定义指针变量p
int *&rp = p; //创建p的引用rp,rp是指针类型
int m =10;
rp = &m; //rp储存m的地址
2. 引用作为函数返回值
当函数返回值是引用:
- 接受返回值的变量也是引用:创建了一个对返回变量的引用
- 接受返回值的变量不是引用:将函数返回值直接赋给这个变量
函数返回值不是引用:
- 不能用引用接收这个返回值
3.常引用
- 若一个函数的返回值为引用 则这个值不能是常量 如:
int & bard()
{
return 3;
}
- 需要声明为常引用 此时返回值可以是常量 如:
const int & bard()
{
return 3;
}
- 在程序中创建了常引用 则不能通过常引用来更改引用对象的值 只能对原对象修改
- 函数形参为常引用时 相应实参可以使常量或变量表达式 如果函数形参为非常引用 则相应实参必须为左值 如
void f( int & i)
{
i =100;
}
main()
{
int a = 1;
f(1);
f(a);
}