当前位置: 首页 > news >正文

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

版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/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

相关文章:

  • fatal error C1010: 在查找预编译头时遇到意外的文件结尾
  • c# Winform dev控件之ChartControl
  • Spring框架学习07——基于传统代理类的AOP实现
  • html迪士尼网页实现代码
  • HDU 2159 FATE
  • es 基于match_phrase/fuzzy的模糊匹配原理及使用
  • spring_事務
  • ASP.NET Core OData now Available
  • 01背包 完全背包 算法解析
  • 解决任务计划程序未启动任务,因为相同任务的实例正在运行的问题
  • 关于oracle的一些函数(数字、字符、转换、空值)
  • 安卓开发笔记(十五):编写一款能够查看任意网站源代码的应用程序
  • Spring拓展接口之FactoryBean,我们来看看其源码实现
  • 王者荣耀刷金币小程序
  • Linux学习之文件系统权限及表示
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • “大数据应用场景”之隔壁老王(连载四)
  • AHK 中 = 和 == 等比较运算符的用法
  • angular2 简述
  • Angularjs之国际化
  • Javascript设计模式学习之Observer(观察者)模式
  • Java读取Properties文件的六种方法
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • python 装饰器(一)
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 技术:超级实用的电脑小技巧
  • 将 Measurements 和 Units 应用到物理学
  • 京东美团研发面经
  • 看域名解析域名安全对SEO的影响
  • 坑!为什么View.startAnimation不起作用?
  • 前端自动化解决方案
  • 微服务核心架构梳理
  • ​马来语翻译中文去哪比较好?
  • ![CDATA[ ]] 是什么东东
  • #Z0458. 树的中心2
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (轉)JSON.stringify 语法实例讲解
  • .a文件和.so文件
  • .NET 设计模式初探
  • .net6使用Sejil可视化日志
  • .netcore 获取appsettings
  • .NET正则基础之——正则委托
  • [ C++ ] 继承
  • [20171101]rman to destination.txt
  • [20180129]bash显示path环境变量.txt
  • [4.9福建四校联考]
  • [BJDCTF2020]The mystery of ip
  • [C#]DataTable常用操作总结【转】
  • [codevs] 1029 遍历问题
  • [codevs1288] 埃及分数