指针与引用在C++里最简单的区别是指针需要解除引用,用“*”运算符,访问运算符为“->”.引用的访问运算符为“.”。它们都是为了间接访问某些东西应运而生的。
区别1:
指针的值可以为空(NULL),而引用不可以。程序中的体现就是引用在定义时必须初始化,而指针则不用。
前者不会有问题,后者编译报错 declared as reference but not initialized
区别2:
指针的指向的位置可以改变,引用不能。
string s1("clark");
string s2("louis");
string *p=&s1;
p=&s2;
|
引用部分的代码会将s1的值也修改为“louis”.
区别3:
因为指针的值可能为空,故在使用其时要做检查,引用则不用
void func(const int *p){
if(p!=NULL)
cout<<*p;
}
|
void func(const int &ref){
cout<<ref;
}
|
结论:当需要改变简介访问工具的值时,选用指针;当间接工具的值肯定不为空,其自身的值(不是其引用对象的值)也不会改变时,选用引用。
阅读(588) | 评论(0) | 转发(0) |