蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88
全部博文(311)
分类: C/C++
2010-04-01 14:42:23
Andrew Huang
|
在C语言里面一般用传地址来处理。下面代码可以实现交换功能。
|
用传地址的话,有几个缺点,一是书写上多了很多*,二个是指针可以任意移动,象把注释里的char * c = (char *)a ;*c=0x2f;被打开a的值会被部分破坏。三,可能引入非法地址。
因此C++引入一种新的语法-----------引用.
2.引用格式
C++引用格式是 类型 & 引用变量名 ,如 int & a;这种写法不会与取变量地址 int *b =&a; 和位与 a & b混淆.
引用是什么?相当于一个安全指针,有指针双向传递功能,传递高效率的优点。又象普通变量一样书写。并且在语法上能有效防止指针常见被误用的几个错误。因此C++大量使用引用。以下就是一个引用版的交换函数,可以看到书写几乎跟swap01一致,但是值能交换过来
|
3.引用为什么防止误用?
3.1 引用初始化只能通过赋给一个现成变量进行
int & a = b;
这样防止空指针和非法地址。因为在引用定义里,以下两种是
被禁止的。
int &d ;
int &e = 100;
3.2 定义后,对引用的只能进行赋值。不能移动地址,或换成新的变量引用。
不能移动地址,这样防住在指针内部移动。
int &a = b; a++;//这样相当于给b的空间值+1
也能在运算中改变引用的对象的地址。
int &f = a;
f = b; //这样仍然是赋值。
//用指针就会有如下风险。
int *f = &a;
f = &b;
因此引用在很多面向对象的开发语言使用,象JAVA的传参默认全部采用引用。