3.1.1 引用的概念

2013-10-07 16:20:41 · 作者: · 浏览: 76

第3章  引用

本章学习要点

深入掌握引用的相关概念和使用方法。

深入掌握常引用的相关概念和使用方法。

灵活运用引用的相关知识进行综合程序设计。

3.1  基本知识点

3.1.1  引用的概念

引用是一个别名。当建立引用时,程序用另一个已定义的变量或对象(目标)的名字初始化它。从那时起,引用作为目标的别名而使用,对引用的改动实际上就是对目标的改动。

建立引用的一般格式如下:

  1. 数据类型 & 引用名=已定义的变量名; 

例如,以下语句说明rd是对double型数的引用,初始化为引用d:

  1. double d;  
  2. double &rd=d; 

引用具有如下特点:

引用能够使用任何合法变量名。

引用不是变量,引用必须初始化。

引用不是值,不占存储空间。声明引用时,目标的存储状态不会改变。所以引用只有声明,没有定义。

引用只有在声明时带有"&",以后就像普通变量一样使用,不能再带"&"。

引用主要用作函数参数。

例如,有以下程序:

  1. #include <iostream.h> 
  2. void main()  
  3. {   int n=100;  
  4.     int &rn=n;  
  5.     n++;  
  6.     cout << "n=" << n << endl;  
  7.     cout << "rn=" << rn << endl;  
  8.     rn++;  
  9.     cout << "n=" << n << endl;  
  10.     cout << "rn=" << rn << endl;  
  11. }  

该程序中说明rn是n的引用,因此,rn和n的值完全同步操作,其执行结果如下:

  1. n=101 
  2. rn=101 
  3. n=102 
  4. rn=102 

由于指针也是变量,所以也可以引用指针变量。其使用格式如下:

  1. 数据类型 * &指针引用名=指针 

同样,先要定义"指针",它是基类型为"数据类型"的指针变量。例如,有以下程序:

  1. #include <iostream.h> 
  2. void main()  
  3. {   int n=10,*pn=&n,*&rn=pn;  
  4.     (*pn)++;  
  5.     cout << "n=" << n << endl;  
  6.     (*rn)++;  
  7.     cout << "n=" << n << endl;  
  8. }  

该程序中,指针pn指向n,rn是pn的引用,执行(*pn)++;使n值增1,同样,执行(*rn)++;使n值增1。其执行结果如下:

  1. n=11 
  2. n=12 

并不是对任何类型的数据都可以引用,在下列情况下不能进行引用:

对void进行引用是不允许的。

不能建立引用的数组。

没有引用的引用。

引用不能用类型来初始化,例如,int &rn=int;是错误的。

没有空引用(空引用没有任何意义)。