引用就是一个变量的别名,声明:
int a = 0;
int &b = a;
b就是a的引用,a和b指向的内存时同一个地址,b可以修改变量的值
一。主要的用途是将引用变量作为函数的参数传递,为什么呢?
(1)对于函数要改变变量的值的情况下,函数进行值传递是不能被改变的,只是创建了一个临时变量,拷贝了原函数的变量值,并不能改变原函数变量的值,可以使用指针进行传递,还有一种方法就是传递引用,也可以用来修改原函数变量的值
eg
void change1(int &a,int &b);
void change2(int *a,int *b);
int main()
{
int w1 = 200;
int w2 = 300;
change1(w1,w2);
change2(&w1,&w2);
}
void change1(int &a,int &b)
{
int t;
t = a;
a = b;
b = t;
}
void change2(int *a,int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
但是可以看出传递引入比较简单,
指针和引用有一个区别就是引用在声明的时候必须初始化,而指针可以声明之后不用初始化,之后再赋值
int a = 10;
int &b;
b = a. 这样是不对的
int *c;
c = &a; 这样是可以的
(2)在传递参数的时候,如果不要对原函数中的变量进行修改,可以使用值传递,但是如果要传入的数据类型比较大的话,是很浪费内存的,因为内存要创建一个临时变量进行对原变量进行拷贝,这时可以传递引用过去,而且如果不能被修改,可以声明为const类型的引用,这样原函数的变量将不会被修改
eg.
void show(const int &a);
二。函数返回引用
具体不知道这有啥意义,就是注意,返回的引用,不能是在函数内定义的一个临时变量,因为离开该函数之后,该变量就找不到了,最简单的方法,是返回参数的引用,即将返回值使用引用的参数来返回,当然这个参数不能是const