指针和引用的区别

来源:互联网 发布:excel数据服务器 编辑:程序博客网 时间:2024/06/06 19:30

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

首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。

 

指针和引用的联系与区别
★ 相同点:
1. 都是地址的概念;
指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。

★ 区别:
1. 指针是一个实体,而引用仅是个别名;
2. 引用使用时无需解引用(*),指针需要解引用;
3. 引用只能在定义时被初始化一次,之后不可变;指针可变;
4. 引用没有 const,指针有 const;
5. 引用不能为空,指针可以为空;
6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
7. 指针和引用的自增(++)运算意义不一样;
8.从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。

 

////////////////////////////////////////////////////////

②引用就是一种别名制,比指针安全,因为引用不可能改变地址,而指针可以改变地址的值。
引用的作用很大程度上是函数参数传递、返回值传递的高效等等所需要的。

而指针方便索引。

引用的变量不可改变其地址。
指针的指向变量可以改变其地址。

 

指针是一个变量的地址,引用是一个变量的别名。例:int a=10;//a存放在存储空间的地址为:0x000009       int &b=a;//b就是a的引用,此时b 的值也为10       int *ptra=&a;//ptra就是a的指针,其值为0x000009



 

原创粉丝点击