& 符号有三种用法

个人区分引用还是地址比较模糊,给自己一个总结!

  

1、类型&变量名,表示引用。

 2、数据&数据,表示按位相与。

 3、&变量名,表示地址。

  

区分的地方: 

1)引用在赋值=的左边,而取地址在赋值的右边,比如

 

int a=3;

 

int &b=a;        //引用

 

 

 

int *p=&a;        //取地址

 

 

 

2)和类型在一起的是引用,和变量在一起的是取址。 举例同样如上,还有下例:

 

int function(int &i)

 

{

 

}  //引用

  

 

由于自己不太能理解指针变量的引用

  

 引用和指针使用原则:

 

1.在可以用引用的情况下,不要用指针;

 

2.引用不允许重新赋值.,当使用一个变量指向不同的对象时,必须用指针;

 

3.引用不允许为空,当存在对象为空时,必须使用指针。 

 引用说明: 

下面的可以好好体会体会,那么你将会受益匪浅的哦!

 (1) double & rr=1; 等价与 double temp; temp=double(1); double & rr=temp;

 (2) int *a; int * & p=a; int b=8; p=&b; //正确,指针变量的引用(由于自己不太能理解指针变量的引用)

 void & a=3; //不正确,没有变量或对象的类型是void

 int & ri=NULL; //不正确,有空指针,无空引用

 (3) int & ra=int; //不正确,不能用类型来初始化

 int *p=new int; int & r=*p; //正确

 (4) 引用不同于一般变量,下面类型声明是非法的:

 int &b[3]; //不能建立引用数组

 int & *p; //不能建立指向引用的指针

 int &&r; //不能建立引用的引用

 (5) 当使用&运算符取一个引用的地址时,其值为所引用变量的地址,

posted @ 2014-08-15 11:15  hanks  阅读(1642)  评论(0)    收藏  举报