指针与引用的区别
来源:互联网 发布:Mac版本好玩的网络游戏 编辑:程序博客网 时间:2024/06/01 08:02
指针指向一块内存,他的内容是所指内存的地址,引用是某块内存的别名,用于定义一个变量来共享另一个变量的内存空间。但是两者并非完全相同,他们之间的差别具体表现在以下几个方面:
⑴ 初始化不同
引用:在创建时必须初始化,即引用到一个有效的对象,否则会引起编译错误。
指针:在定义时不必初始化(但不推荐,可能回出现野指针),可以在定义后面的任意地方重新赋值。
⑵ 可修改性不同
引用:“从一而终”。一但被初始化为指向一个对象,它就不能被改变为另一个对象的引用,否则会引起编译错误。
指针:可以在任何时候都可以改变为指向另一对象。
⑶ 是否存在NULL
引用:不存在NULL引用,引用不能使用指向空值的引用,必须总是指向某个对象。
指针:可以是NULL,不需要总是指向某些对象,可以把指针指向任意对象。
基于这一点不同,在函数的参数传递时,传引用要比传指针更安全。(因为指针存在空指针/野指针)
下面看一个具体的例子:
eg1:看代码找错误:
#include <iostream>using namespace std;int main(int argc,char* argv[]){ int a = 1, b=2; int &c; int &d=a; &d = b; int *p; *p = 5; return 0;}
代码第7行,编译错误。引用变量c没有初始化。
代码第9行,编译错误。d定义为a的别名,但引用不具有可修改性。
代码第11行,运行时错误。由于p没有被初始化,此时的p是野指针,对野指针的内容赋值是非常危险的,会导致程序奔溃。
0 0
- 指针与引用的区别
- 指针与引用的区别
- 引用与指针的区别
- 指针与引用的区别
- 指针与引用的区别
- 指针与引用的区别
- 指针与引用的区别
- 指针与引用的区别
- 指针与引用的区别
- 引用与指针的区别
- 指针与引用的区别
- 指针与引用的区别
- 引用与指针的区别
- 指针与引用的区别
- 指针与引用的区别
- 引用与指针的区别
- 指针与引用的区别
- 指针与引用的区别
- coco2d-js demo程序之滚动的小球
- UINavigationController
- java经典面试题(JAVA基础部分)
- linux 命令积累
- Go 语言编程
- 指针与引用的区别
- 海量数据处理分析
- UITableViewController (用.xib文件自定义cell)
- C++ primer(第五版) 练习 3.45 个人code
- 第一篇博客
- java解析xml的几种方式
- Apache反向代理结合Tomcat集群来实现负载均衡(二)、原理分析
- Linux的inode
- linux重定向命令详解