C++中的引用

      最近重新看C++,看到些以前没注意的DD,温故而知新,暂且记下。

 

     引用是能自动间接引用的一种指针,即不必使用间接引用运算符“*”,就可以得到一个引用值。引用可以为变量起别名,它主要用作函数参数以及函数的返回类型。 

1 引用的定义

     如  int i;      int &j=i;   j是i的引用。

(1) 定义引用时,必须立即对它进行初始化,不能定义后再赋值。

      如  int i;  int &j;  j=i;    这样是错误的,应该像上面示例中那样定义。

(2)  引用实际上是一种隐式指针,和显式指针不同的是,每次使用引用的变量时,可以不用书写间接引用运算符"*",因此就好像使用变量的另一个别名一样使用引用,但引用的本质不是别名,而是变量的一个指针(隐式的)。

(3)  引用不可以重新赋值,不可使其作为另一个变量的别名。

     如  int i,k;   int &j=i;  j=&k;     //最后一句重新赋值,错误。

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

     如  int  num = 0;   int  &ref = num;   int  *p = &ref;

     p中保存的是变量num的地址。如果语句为  int  *p = ref;则编译出错。

     可能会有人不明白,引用的本质不是隐式指针,也就是指针吗?那应该是 ref (not  &ref)表示num 的地址才对啊,这样写有什么不对呢。呵呵,前面说过 引用使用起来和别名一样,代表它所引用的变量的值,即 ref 就代表 num,所以要表示 &num(即num 的地址),当然不能也用 ref 表示啊,要不 ref 到底表示 num  or  &num。既然它做别名用,那就像别名一样用  &ref 表示 &num 吧。(这是偶自己的理解哦^^^^^^^^^)

2  引用参数

    引用的一个重要用途就是将引用作为函数的参数,用引用传递取代地址传递,可以使程序 easy 很多。如:

void swap(int &m,int &n)     //引用坐函数参数
{
 int temp;
 temp = m;
 m = n;
 n = temp; 
}
main()
{
 int a = 5,b = 10;
 swap(a,b);      //这样就可以将 a,b 的值交换,不用采用传递地址的方式,简化程序很多
}

3  引用返回值

    函数可以返回一个引用,将函数说明为返回一个引用的主要目的是:可以将该函数用在 = 的左边。如:

int &index(int i);  //将函数返回类型定义为引用

index(m) = 100;  //将函数放在 = 左边,重新赋值,此时 index(m) 的值为100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值