浅谈指针和引用
2015-08-06 11:58
253 查看
我们知道用指针和引用来定义函数形参的时候,都可以直接改变参的值。那么指针和引用有哪些区别呢?
我们先根据引用和指针的定义展开:引用是某个变量或者对象的别名,而指针则存储的是一个机器码地址,这个地址是某个具体变量或者对象的地址。因此区别有:
1)指针可以为空,但是引用不行
2)声明指针可以不指向任何对象,因此使用指针之前必须做判空操作,而引用则不必
3)引用一旦声明后,就不可以改变指向;但是指针可以,如++操作符,指针则指向下一个对象,而引用则改变的是指向对象的内容
4)引用的大小是所指变量的大小,而指针仅仅是个机器码 ,指针的大小永远都是4个字节,不管是几级指针
5)引用形式上漂亮
6)引用比指针安全,而指针的指向很灵活,容易产生野指针,比如多个指针指向一块内存,free掉一个,别的指针就成了野指针。
我们先根据引用和指针的定义展开:引用是某个变量或者对象的别名,而指针则存储的是一个机器码地址,这个地址是某个具体变量或者对象的地址。因此区别有:
1)指针可以为空,但是引用不行
2)声明指针可以不指向任何对象,因此使用指针之前必须做判空操作,而引用则不必
3)引用一旦声明后,就不可以改变指向;但是指针可以,如++操作符,指针则指向下一个对象,而引用则改变的是指向对象的内容
4)引用的大小是所指变量的大小,而指针仅仅是个机器码 ,指针的大小永远都是4个字节,不管是几级指针
5)引用形式上漂亮
6)引用比指针安全,而指针的指向很灵活,容易产生野指针,比如多个指针指向一块内存,free掉一个,别的指针就成了野指针。
相关文章推荐
- Codeforces Round #Pi (Div. 2)
- WdatePicker日历控件无法弹出
- SQL Server表分区
- HTTP状态码整理
- ISIS+BGP
- AWS 亚马逊云实现内网资源高可用(Keepalived broadcast失效的情况)
- 黑马程序员--- objective-c的类 对象 方法
- shell函数传递带空格的参数
- Java中二叉树数据结构的实现示例
- 关于win7升级win10后高分屏界面显示模糊问题,字迹显示模糊问题解决办法
- Linux shell知识点汇总
- UITextField手动编写
- 9.5位操作(一)——M插入N,使得M从N的第j位开始,到第i位结束
- Eclipse下BASE64Decoder提示错误的解决办法
- JavaScript之数据类型
- ANT标签详解
- 合并CR:将某CR挂到另一个CR下
- SAP本地化-银企直连
- zenity编写简易图形交互界面,SHELL
- call transaction&nbsp…