说到引用 先来讲个故事: 生活的院子里有这样个小盆友 的名字叫罗XX 喜欢给 起个外号 看着 营养不太好 脑袋比较大、身子比较小 于是 就给 起了个叫"萝卜头"的外号。那么罗XX就是 的真实姓名 萝卜头就是 的个别名 那么什么是引用呢??

定义:引用:就是变量的个别名。

20160506194946525-.png

注:作为别名来说 个变量不能只有别名 而没有自己的真实姓名。

基本数据类型的引用

如下面的一段代码:

实例

#include <iostream>using namespace std;{int a = 3;int &b = a; //b就是a的引用 即b是a的个别别名。//引用必须初始化 否则编译会报错b = 10;cout<< a << endl; //此时a 的值 已由原来的3变成了10.因为 无论对别名做什么操作 其实都是对变量的本身做操作。就像 去交萝卜头去干什么 罗XX本身就去干什么。return 0;}

结构体类型的引用

如下面的一段代码:

实例

#include <iostream>using namespace std;//定义个名叫Coor的结构体 这是个坐标。typedef struct{int x;int y;}Coor;int main(void){Coor c1; //定义个结构体变量 叫c1.Coor &c = c1; //给c1起了个别名叫c.c.x = 10; //通过引用给结构体变量的数据成员赋值c.y = 20;cout<< c1.x << c2.y; //输出的结果:10 20return 0;}

指针类型的引用

指针类型的引用是引用当中最为复杂 最难理解的一部分 同时在写法形式上也有着与众不同的地方。

定义:

 类型 *&指针引用名 = 指针;

看个例子:

实例

#include <iostream>using namespace std;int main(void){int a = 10; //定义个整型的a变量 a的值为10。int *p = &a; //定义个指向a变量的指针int *&q = p; //定义个指针的引用 即q为p的别名。 定义方法:类型 *&指针引用名 = 指针;*q = 20; //把20赋给*q,相当于是把20赋值给*p 也就相当于把20赋值给a.cout<< a << endl; //输出a 的值为20.return 0;}

引用作函数参数

在没有学习引用之前 学习 C 语言时 学过这样的经典程序:

//将两个值进行交换void fun( int *a,int *b) //形参为两个整型的指针变量{int temp = 0; //定义个临时变量。良好的习惯是定义个变量并初始化它;c = *a; //将*a赋值给c;*a = *b; //将*b赋值给*a;*b = c; //再将c赋值给*b;这样就完成了a、b数值的交换}int x = 10,y = 20;fun(&x,&y); //在主函数中调用时 传过去的实参需要写成 取地址a 取地址b,比较麻烦 也不易理解。

现在 学习了引用 在完成同等功能时需要写成什么样子?

实例

void fun (int &a, int &b) //形参为两个整型的引用{int temp = 0;c = a;a = b;b = c;}int x = 10,y = 20;fun(x,y); //在主函数中调用时 实参传过去后a是x的别名 b是y的别名。

原文地址:https://blog.csdn.net/stop_and_go/article/details/51334137