版权声明:本文为博主原创文章,未经博主同意不得转载。 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; }

输出结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXE4NDQzNTIxNTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

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

#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的值)!

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

C++学习笔记30,指针的引用(2)的更多相关文章

  1. C语言学习笔记 (002) - C++中引用和指针的区别(转载)

    下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const.volatile等等.见下图 ...

  2. C++学习笔记----3.2 C++引用在本质上是什么,它和指针到底有什么区别

    从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有 ...

  3. Swift 学习笔记 (三) 之循环引用浅析

    原创:转载请注明出处 110.自动引用计数实践 下面的例子展示了自动引用计数的工作机制.例子以一个简单的Person类开始,并定义了一个叫name的常量属性: class Person {     l ...

  4. c++学习笔记(c++中的引用)

    1.c++中的bool类型:     其实c语言中也有bool类型,如果是遵守c90标准的编译器(其实现在大量编译器都是c90标准的),对于bool类型的使用除了要使用头文件 stdbool.h外,与 ...

  5. [原创]java WEB学习笔记30:Cookie Demo 之显示最近浏览的记录

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. 【C语言学习笔记】指针

    用来存放一个变量地址的变量就叫指针变量.指针变量也是有类型约束的,一般什么类型的指针指向什么类型的变量. 指针之所以叫变量,是因为它里面所存放的变量的地址也是不断变化的,指针是可以移动的. 定义格式: ...

  7. C++学习笔记31,指向引用的指针(3)

    我们来看一个简单的指向引用的指针的样例. #include <iostream> using namespace std; int main(){ int x=10; int y=20; ...

  8. C++学习笔记1_ 指针.引用

    1.引用的本质struct typeA{ int &a;}struct typeB{ int *a;}int main(void){ cout<<sizeof(struct typ ...

  9. C++学习基础二——指针与引用的区别

    一.指针: (1)如果对指针进行解引用操作 赋值,改变的是指针所指向对象的值:(2)如果不对指针进行解引用操作 赋值,则改变的是指针本身的值:(3)const指针本身的值不能修改,但是const指针所 ...

随机推荐

  1. 使用Jenkins+Calabash+Cocoapods搭建iOS持续集成环境

    使用jenkins+calabash+cocoapods搭建ios持续集成环境 持续集成 持续集成到底是什么呢?依据敏捷大师Martin Fowler的定义: 持续集成是一种软件开发实践. 在持续集成 ...

  2. RFS 理解

    1.背景 网卡接收一个数据包的情况下,会经过三个阶段:   - 网卡产生硬件中断通知CPU有包到达 - 通过软中断处理此数据包 - 在用户态程序处理此数据包   在SMP体系下,这三个阶段有可能在3个 ...

  3. lodash 移除假值数组 compact

    创建一个移除了所有假值的数组.例如:false.null. 0."".undefined, 以及NaN 都是 “假值”. <!DOCTYPE html> <htm ...

  4. Android Shader 颜色、图像渲染 paint.setXfermode

    Shader Shader是一个基类,表示在绘制期间颜色的水平跨度 它的子类被嵌入在Paint中使用,调用paint.setShader(shader). 除Bitmap外的其他对象,使用该Paint ...

  5. android activity声明周期学习笔记

    android生命周期图: Activity继承了ApplicationContext: 1:初次加载activity时顺序执行:onCreate()-->onStart()-->onRe ...

  6. call_user_func — 把第一个参数作为回调函数调用

    call_user_func — 把第一个参数作为回调函数调用 说明 mixed call_user_func ( callable $callback [, mixed $parameter [, ...

  7. is_callable — 检测参数是否为合法的可调用结构

    说明 bool is_callable ( callable $name [, bool $syntax_only = false [, string &$callable_name ]] ) ...

  8. Maven环境下搭建SSH框架之Spring整合Hibernate

    © 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Spring:4.3.8.RELEASE Hibernate:5.1.7.Final MySQL:5.7.17 注意:其他版本在某些特性 ...

  9. 改进Spring中的分页技术

    Spring中有一个PagedListHolder,能够实现分页. 但此类有几个缺点: 1. 使用此类的代码比較繁琐 2. 此类存放的数据源是全部的记录集,即对于记录数为1000条的数据,即使我们仅仅 ...

  10. Template Method模式

    模版方法模式,实际上就是指子类做方法实现,父类做算法实现. 通常情况下,子类继承父类,我们是站在子类的视角上来看父类的,目的不外乎下面三个 1,子类继承父类的方法 2,通过子类来增加方法,实现新的功能 ...