C++引用和指针的区别

C++引用和指针在间接使用其他对象的各种操作功能上面类似,但是两者的不同之处也很明显:

1.指针本身占据内存空间,但是引用只是一个对象的别名,本身不分配内存空间;
2.指针定义时可以不初始化,但是定义一个引用必须进行初始化,并且初始化时只能是一个对象;
  比如:int &b = 3.14; //这样是错的,要明白"引用只是一个对象的别名而已"
3.指针可以重新指向另外一个对象,但是引用无法重新绑定到另外一个对象;

指针和引用有很大不同,但是初学的时候确实容易混淆,只要记住,引用只是一个对象的别名,两者共占一个内存地址,而指针则有自己单独的内存空间,只是指向某个内存地址。
那么,指向指针的引用该怎么理解呢?

#include <iostream>
using namespace std;
int main()
{
    int test = 3;
    int *p = NULL;
    int *&r = p;  //r是对指针p的一个引用  
    cout << "p的地址为:" << p << " r的地址为" << r << endl;

    r = &test;    //相当于p = &test
    cout << "*p的值为" << *p << " *r的值为" << *r << endl;

    *r = 4;       //相当于*p = 4,改变了test的值
    cout << "test的值为" << test << endl;
    cout << "*p的值为" << *p << " *r的值为“ << *r <<endl;

    return 0;
}

输出结果:
p的地址为0 r的地址为0
*p的值为3 *r的值为3
test的值为4
*p的值为4 *r的值为4

经过这个例子,相信大家对引用和指针不明白的那一部分应该能理解了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值