C++学习笔记30,指针的引用(2)

博客介绍了能够创建包括指针类型在内的任何类型的引用。通过简单示例及调试查看变量地址和值,指出引用一旦创建指向不可改变,能改变的只是其值,还提及指向引用的指针将在下一篇博文介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.youkuaiyun.com/guang_jing/article/details/32910093

能够创建不论什么类型的引用,包含指针类型。

看一个简单的指针的引用的样例。比如:

#include <iostream>
using namespace std;
int main(){
    int x=10;
    int y=20;
    int z=30;
    int* ptx=&x;
    int* ptz=&z;
    //指针的引用,声明从右往左看。rtp与&结合,
    //剩余的符号和左边结合
    //引用一旦创建。不能改变其指向,仅仅能改变其值
    int* &rtp=ptx;
    cout<<"&x="<<&x<<endl;
    cout<<"&ptx="<<&ptx<<"           "<<"&rtp="<<rtp<<endl;
    cout<<"ptx="<<ptx<<"           "<<"rtp="<<rtp<<endl;
    cout<<"*ptx="<<*ptx<<"           "<<"*rtp="<<*rtp<<endl<<endl;
    ptx=&y;
    //ptx的值改变了,rtp的值也相对改变了
    //但其指向不变
    cout<<"&y="<<&y<<endl;
    cout<<"&ptx="<<ptx<<"           "<<"&rtp="<<rtp<<endl;
    cout<<"ptx="<<ptx<<"           "<<"rtp="<<rtp<<endl;
    cout<<"*ptx="<<*ptx<<"           "<<"*rtp="<<*rtp<<endl<<endl;
    rtp=ptz;
    //rtp的值改变了,ptx的值也相对改变了
    //但rtp指向不变
    cout<<"&ptz="<<&ptz<<endl;
    cout<<"&ptx="<<ptx<<"           "<<"&rtp="<<rtp<<endl;
    cout<<"ptx="<<ptx<<"           "<<"rtp="<<rtp<<endl;
    cout<<"*ptx="<<*ptx<<"           "<<"*rtp="<<*rtp<<endl<<endl;

}

输出结果:


这样看不明显,我们来简化一下样例,并通过调试来查看其变量地址以及值。

#include <iostream>
using namespace std;
int main(){
    int x=10;
    int y=20;
    int z=30;
    int* ptx=&x;
    int* ptz=&z;
    //指针的引用,声明从右往左看,rtp与&结合,
    //剩余的符号和左边结合
    //引用一旦创建,不能改变其指向。仅仅能改变其值
    int* &rtp=ptx;
    ptx=&y;
    //ptx的值改变了。rtp的值也相对改变了
    //但其指向不变
    rtp=ptz;
    //rtp的值改变了。ptx的值也相对改变了
    //但rtp指向不变

}
单步执行截图:(看ptx和rtp的值)






能够看到,rtp一直指向0x22fed8,而这个地址。正是&ptx的地址,从这里能够看出,引用一旦创建其指向不可改变,能改变的仅仅是其值(ptx的值)!

这就是指针的引用,指向引用的指针请看下一篇博文。


转载于:https://www.cnblogs.com/ldxsuanfa/p/10558826.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值