Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60492
  • 博文数量: 17
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 14:14
文章分类

全部博文(17)

文章存档

2011年(1)

2009年(16)

我的朋友

分类: LINUX

2009-05-06 11:51:30

引用与指针的区别:

引用:一个变量的别名,是我们给变量的内存空间起另外一个名字
指针:指向另一个内存空间的变量,我们可以通过它来索引另一个内存空间的内容,本身有自己的
     内存空间

区别:
    <1> 指针是一个实体,间接访问变量;而引用仅是个别名,直接访问变量。
    <2> 引用只能在初始化的时候初始化,以后不可改变(引用在开始的时候就绑定到了一个内存空间  (开始必须赋初值),所以他只能是这个内存空间的名字,而不能改成其他的,当然可以改变这个内存空间的值);而指针可以随便改变
    <3> 引用使用时无需解引用(*),指针需要解引用
    <4> 引用没有 const,指针有 const,const 的指针不可变;
        引用可简单认为是 &a <==> int * const p;
    <5> 引用不能为空,指针可以为空
    <6> “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所  指向的变量或对象的地址)的大小

联系:
    <1> 引用在语言内部用指针实现(如何实现?可简单认为是 &a <==> int * const p)

引用的一些规则如下:
    <1> 引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
    <2> 不能有NULL 引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
    <3> 一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。
阅读(797) | 评论(0) | 转发(0) |
0

上一篇:内存管理内幕

下一篇:堆与栈

给主人留下些什么吧!~~