Item1 指针与引用的区别

本文探讨了C++中引用与指针的关键区别:引用必须在定义时初始化且不可更改指向,而指针可以重新指向不同的对象。此外,引用不能为null,而指针可以。文中通过实例说明了这些概念。

1、指针可以置空,但不存在指向空值的引用。所以引用首次出现的地方必须初始化,后期使用的时候不用测试它的合法性;

string& rs; // 错误,引用必须被初始化
string s("xyzzy"); string& rs = s; // 正确,rs 指向 s

string *ps; // 未初始化的指针合法但危险【指针没有这样的限制】

 

void printDouble(const double& rd)
{
    cout << rd; // 不需要测试 rd,它肯定指向一个 double 值

void printDouble(const double *pd)
{
    if (pd) { // 检查是否为 NULL
        cout << *pd;
    }
}
 

2、指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变。

string s1("Nancy");
string s2("Clancy");
string& rs = s1; // rs 引用 s1
string *ps = &s1; // ps 指向 s1


rs = s2; // rs 仍旧引用 s1,但是 s1 的值现在是 "Clancy"【赋值函数】
ps = &s2; // ps 现在指向 s2,s1 没有改变
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值