指针和引用的区别

指针和引用的区别

指针和引用是相似的概念,但并不相同。它们都指向一个对象,但是指针允许这个指向随时变化,并且它允许你指向一个空对象。引用不一样,引用在初始时就必须指向一个对象,并且这个指向永远不能变化,也就是说永远只能指向这个对象,不能改变。可以这么理解,指针是一个变量的指向,引用是一个常量的指向。

指针和引用在操作上也有区别,指针使用操作符*->,引用使用操作符&.

比如,在定义时他们使用不同的操作符:

定义指针:int  *number ;   // 可以不初始赋值

定义引用:string s = hangcool ;

string&  ps = s ;   // 必须初始赋值,这样ps 就指向了

在指向一个变量的成员时使用不同的操作符:

指针指向:x->y ;     // 指向指针的成员

引用指向:x.y ;       // 指向引用的成员

当然我们也可以这样写:(*x).y 等价于 x->y 

在指针的概念里必须清楚,代表指向某个地址的地址值,*x 代表指向某个地址的变量值。

另外,除了在定义指针和引用的地方用到,它们还有一个重要的用途:

在变量前使用它们有不同的含义:

 称作 引用操作符  它表示要取的是表达式所表示的地址指向的内容。它可以被翻译为“… 指向的数值” ("value pointed by") 

比如,* mypointer 可以被读作“mypointer 指向的数值”。

 称作 地址或反引用操作符 。它被用作一个变量前缀,可以被翻译为“… 的地址”("address of") 

比如,&variable1 可以被读作 variable1 的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值