Chinaunix首页 | 论坛 | 博客
  • 博客访问: 298935
  • 博文数量: 148
  • 博客积分: 4365
  • 博客等级: 上校
  • 技术积分: 1566
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-05 21:38
文章分类
文章存档

2014年(2)

2013年(45)

2012年(18)

2011年(1)

2009年(54)

2008年(28)

我的朋友

分类: C/C++

2008-10-30 19:22:21

指针与引用在C++里最简单的区别是指针需要解除引用,用“*”运算符,访问运算符为“->”.引用的访问运算符为“.”。它们都是为了间接访问某些东西应运而生的。
区别1:
    指针的值可以为空(NULL),而引用不可以。程序中的体现就是引用在定义时必须初始化,而指针则不用。

char *p;
char &r;

前者不会有问题,后者编译报错 declared as reference but not initialized

区别2:
    指针的指向的位置可以改变,引用不能。

    string s1("clark");
    string s2("louis");
    string *p=&s1;
    p=&s2;

    string &ref=s1;
    ref=s2;

引用部分的代码会将s1的值也修改为“louis”.

区别3:
    因为指针的值可能为空,故在使用其时要做检查,引用则不用

void func(const int *p){
if(p!=NULL)
cout<<*p;
}

void func(const int &ref){
cout<<ref;
}


结论:当需要改变简介访问工具的值时,选用指针;当间接工具的值肯定不为空,其自身的值(不是其引用对象的值)也不会改变时,选用引用。
阅读(588) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~