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

原创 2011年01月07日 22:32:00

 

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;

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

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++基础之引用与指针的区别与联系、常引用使用时应注意的问题

指针和引用主要有以下区别: 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。 引用初始化后不能被改变,指针可以改变所指的对象。 不存在指向空值的引用,但是...

C++指针与引用的区别

  • 2012年03月11日 09:42
  • 72KB
  • 下载

指针和引用的区别(More Effective c++ )

指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“. ” ),但 是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候 使用指针,在什么时候使用...

C++中指针和引用的区别

C++中指针和引用的区别   指针和引用主要有以下区别: 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。 引用初始化后不能被改变,指...

C++中引用、指针,传值的联系和区别

本文简述了引用、指针、传值的的联系和区别,还说明了pass by value和pass by reference的区别,并附上大量代码进行举例说明...

java中的引用和C++中的指针的区别我的理解

1.类型:引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。2.所占内存: 引用声明时没有实...

[转载]C++中引用传递与指针传递区别(进一步整理)

转载自 http://xinklabi.iteye.com/blog/653643 这篇文章是在学习了编译原理参数传递后对c++和Java按引用传递的不同表现产生疑问,在网上搜索找到的博文,这里提...
  • lqadam
  • lqadam
  • 2016年12月14日 13:38
  • 245

指针和引用的区别(C++)

从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。 而引用是一个别名,它在逻辑上不是独立的,它的存在具...

c++引用和指针的区别

下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等...
  • huruzun
  • huruzun
  • 2014年04月09日 22:33
  • 563
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++基础之:引用与指针的区别
举报原因:
原因补充:

(最多只允许输入30个字)