一.引用说明
- 引用概念:
- 一个变量的一个别名,一个引用只属于一个变量。
- 引用与其代表的变量共享同一个存储单元,与变量有着相同的地址
- 格式:
类型+&+引用名=变量名;
(&在此起标识作用,并不代表取地址符)
- 注意事项:
- 引用必须初始化。
- 由于没有单独的存储空间,引用只有声明没有定义。
- &:当&前为类型名时,必为引用声明(int &b=a;),当&单独存在时(&p=a;),为取地址符。
- 不能对数组进行引用命名
char a[6]="hello";
char &b[6]=a;
代码中是错误的,因为数组名a只是代表数组首元素地址而并不是一个有存储空间的变量
5. 若想使用引用,而且改变原值应该使用常引用
const+类型名+&+引用名=变量;
int a=1;
const int &b=a;
6.引用多用于函数参数
二.应用
-
普通引用
-
void fun() { int x=3; int &y=x; cout<<x<<" "<<y<<endl; y=5; cout<<x<<" "<<y<<endl; } int main() { fun(); }
- 结构体引用
typedef struct
{
int x=1;
int y=2;
}mystruct;
int main()
{
mystruct st1;
mystruct &st2=st1;
st2.x=3;
st2.y=4;
cout<<st1.x<<" "<<st1.y<<endl;
}
- 函数参数的引用
void fun3(int &a,int &b)
{
int c=0;
c=a;
a=b;
b=c;
}
int main()
{
int x=20;
int y=30;
cout<<x<<" "<<y<<endl;
fun3(x,y);
cout<<x<<" "<<y<<endl;
}
- 指针的引用
-
void fun4() { int a=3; int *p=&a; int *&q=p; *q=5; cout<<a<<endl; } int main() { fun4(); }