Harry的专栏

专注于Deep Learning, MT, NLP,能力是一种态度

C++基础之:引用与指针的区别

 

C++中指针和引用的功能很相似,共同点为都可以直接或者是间接地 指代其他的对象 。下面介绍不同点

1:操作符

指针使用“* ”和“ -> ”操作符,引用使用的是“ .

2:变量初始化

首先引用不能为空,指针可以为空。

引用必须要指代对象,指针可以在初始化时

string &str; //错误,引用不能为空

string s("liyachao");

string &rs=s; //可以

string *ps; //可以,指针没有限制

注意:不要引用空的地址,例如:

char * pc=0; //指针指向空地址

char & rc = *pc; // 引用指向空地址,导致结果不确定,危险

3:效率问题,引用比指针更有效

由于引用不能为空,所以他比指针效率更高,用在函数参数时,引用不需要检查是否有效,而指针在使用时必须检测是否为空。

4:重新赋值

指针可以重新复制,用来指向另外一个不同的对象;引用总是指向他初始化时指代的对象。

string s1("liyachao");

string s2("harry");

string & rs = s1; //可以,指向 s1

string *ps = &s1; //可以指向 s1

rs = s2; // rs仍然指向 s1 ,但是 s1 的值变成了 "harry"

ps = s2; // ps指向 s2 s1 值不变

总结:

使用指针的情况:

当有可能什么都不指向时,或者是在不同的时候指向不同的对象时用指针。

使用引用的情况

1:总会指向一个对象,并且一旦指向哪个对象,就不会指向其他的对象,使用引用。

2:当实现某些操作符的时候。比如: [] ,这个操作符通常需要返回一个值作为(下一个)赋值语句的赋值目标。

vector<int> v(10);

v[5] = 10; //目标为返回操作符 []

如果[] 操作符返回一个指针,上面最后一个语句就必须写成:

*v[5] = 10;

绝大多数情况下[] 操作符应该返回引用。

 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Harry_lyc/article/details/6123604
文章标签: c++ string c
个人分类: C/C++
想对作者说点什么? 我来说一句

c++指针引用区别

2009年02月18日 14KB 下载

C++指针引用

2011年11月16日 104KB 下载

没有更多推荐了,返回首页

不良信息举报

C++基础之:引用与指针的区别

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭