菜鸟编程 引用

这里,笔者想分享一个和指针功能相似的类型——引用类型。

指针类型提供了通过一个变量间接访问另一个变量的功能,但这个也会有一些书写繁琐、程序不可靠的问题。引用类型能较好的解决这些问题。

所谓引用,就是给变量起一个别名。例如: int x = 20; int &j =  x; 这里就定义了变量j是i的别名,也就是说,二者共享一块存储空间。

引用和指针不同的地方在于,引用只能指向a,之后就不能指向b了,但指针p在指完变量i之后,可以再指向变量t。同时,指针存在空指针,但是没有空引用这个东西。也就是说,声明一个引用类型的变量的同时,必须赋值。

引用其实是一种隐式的指针,但每次使用的时候,不用写*。而且,它可以对用另外一个引用,例如: int &m = j; 这个时候,引用变量m和j共同指向i,都是i的别名。


关于引用的传递:

之所以有引用,主要目的是将引用作为函数的参数,也就是进行地址的传递。

void swap(int *a, int *b)

{

    int c;

    c = *a;

    *a = *b;

    *b = c;

}

以上这个函数如果要调用的话,需要是 swap(&a, &b);

但如果是写成引用,可以是:
void swap(int &a, int &b)

{

    int c = a;

    a = b;

    b = c;

}

调用的时候就可以是 swap(a , b);


关于常量的引用传递:
引用传递也有一定的风险,因为地址的共享,实际参数的值可能会改变。对此,可以进行const 的引用。通过const 来限定引用传递参数。这样,这个形参就不能被修改了。

int max(const int &a,const int &b);

常量的引用传递常常用来代替值传递,这一点在参数占比较大的空间时会提高效率。


以上是笔者的一些分享,如果有表述错误的地方,还请更正,谢谢!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值