- 引用概念:引用不是新定义一个变量,而是给存在的变量其别名,与其引用的变量(引用实体)共用同一块内存空间
- 类型& 引用变量名=引用实体
#include <iostream>
using namespace std;
int main()
{
int a=10;
int& ra=a;
ra=20;
printf("a=%d\n",a);
printf("ra=%d\n",ra);
return 0;
}
- 引用特性
(1)引用类型必须与实体是同种类型
(2)引用类型变量在定义时必须初始化
(3)一个变量(实体)可以有多个引用
(4)引用一旦引用了一个实体之后,再不能引用其他的实体了
#include <iostream>
using namespace std;
int main()
{
int a=10;
int& ra=a;
double& rra=a;
int& ra1;
int& ra2=a;
int& ra3=a;
printf("a=%d\n",a);
printf("ra=%d\n",ra);
printf("ra=%d\n",ra2);
printf("ra=%d\n",ra2);
return 0;
}
- 引用和引用的实体的生命周期是一样的吗?
在同一个作用域中,两个生命周期相同,但在不同的作用域,实体的生命周期更长。
#include <iostream>
using namespace std;
int main()
{
int a=10;
int& ra=a;
if(a!=0)
{
int &ra1=a;
ra1=100;
}
ra1=1;
return 0;
}
- 常引用
const修饰的引用称为常引用,其内容不能被修改
#include <iostream>
using namespace std;
int main()
{
const int a=10;
const int& ra=a;
cout<<ra<<endl;
cout<<a<<endl;
const int& b=10;
int d=4;
const int& rd=d;
d=9;
cout<<rd<<endl;
double c=7.17;
const int& rc=c;
c=6.4;
cout<<rc<<endl;
cout<<c<<endl;
cout<<&rc<<endl;
cout<<&c<<endl;
return 0;
}