引用和指针的区别

 

引用:一个变量的别名。打个比方,有个kid非常可爱,大名叫静静,还有个小名叫小花。其实静静和小花都是指的同一个人。

指针:指针本身也是一个变量,这个变量的内容可以是空(NULL),当然更可以是另一个变量的内存地址。指针就好像一把钥匙,用来打开一个抽屉,

这个抽屉就是内存空间,空间的内容就是存储的数据。

 

他们之间的区别:

1、引用在被定义是就必须要被初始化,而且不可以为NULL,指针在定义时可以不被初始化,当然还是初始化比较好,而且可以被赋值为NULL。

  比如: int a;

      int b = &a;     // b为a的引用,在定义时应当初始化。

        int *c = NULL;

                      c = &a;    //  c可以被赋值为NULL,此时c指向了a的内存地址。

 

2、引用不可以用const 修饰,指针可以。 这个就不解释了,指针可以使用const 限制它不被更改,因为指针指针可以指向其他的内存单元,引用本身就是变量的

别名,一经初始化,不可更改,当然不能再用const修饰了。

 

3、引用是直接访问内存单元,指针是间接访问,为啥呢?看定义吧。。。

 

4、自增运算(++)对于引用和指针来说,运算结果是不同的。

  int a[2] = {0,0};

  int b = &a[0];

  int *c = a;

  b++;  //这是啥意思?

  c++;//这又是啥意思?

      首先,b是a[0]的引用,所以b就是a[0] b++等价于a[0]++;所以a[0]变成了 1.然后,c++;是干了点啥事儿呢?c是一个变量,内容是数组a的地址,

c++的意思是指向数组的下一个元素,所以c++的运算结果就是c现在指向了a[1]。(*c)++ 和b++的运算结果就是一样的了。

 

  引用一般用于函数的参数传递和参数返回,指针呢?哪里用都可以,只是用起来要小心。

 

 

转载于:https://www.cnblogs.com/tju-gsp/p/3600794.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值