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;
}
输出结果:
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)的更多相关文章
- C语言学习笔记 (002) - C++中引用和指针的区别(转载)
下面用通俗易懂的话来概述一下: 指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const.volatile等等.见下图 ...
- C++学习笔记----3.2 C++引用在本质上是什么,它和指针到底有什么区别
从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有 ...
- Swift 学习笔记 (三) 之循环引用浅析
原创:转载请注明出处 110.自动引用计数实践 下面的例子展示了自动引用计数的工作机制.例子以一个简单的Person类开始,并定义了一个叫name的常量属性: class Person { l ...
- c++学习笔记(c++中的引用)
1.c++中的bool类型: 其实c语言中也有bool类型,如果是遵守c90标准的编译器(其实现在大量编译器都是c90标准的),对于bool类型的使用除了要使用头文件 stdbool.h外,与 ...
- [原创]java WEB学习笔记30:Cookie Demo 之显示最近浏览的记录
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 【C语言学习笔记】指针
用来存放一个变量地址的变量就叫指针变量.指针变量也是有类型约束的,一般什么类型的指针指向什么类型的变量. 指针之所以叫变量,是因为它里面所存放的变量的地址也是不断变化的,指针是可以移动的. 定义格式: ...
- C++学习笔记31,指向引用的指针(3)
我们来看一个简单的指向引用的指针的样例. #include <iostream> using namespace std; int main(){ int x=10; int y=20; ...
- C++学习笔记1_ 指针.引用
1.引用的本质struct typeA{ int &a;}struct typeB{ int *a;}int main(void){ cout<<sizeof(struct typ ...
- C++学习基础二——指针与引用的区别
一.指针: (1)如果对指针进行解引用操作 赋值,改变的是指针所指向对象的值:(2)如果不对指针进行解引用操作 赋值,则改变的是指针本身的值:(3)const指针本身的值不能修改,但是const指针所 ...
随机推荐
- 【Javascript 基础】使用数组
Javascript 数组的工作方式与大多数编程语言的数组类似. <!DOCTYPE html> <html lang="en"> <head> ...
- java学习笔记——日期处理
获取系统当前时间使用:java.util.Date类,而这个Date的构造方法如下: 无参构造:public Date() 有参构造:public Date(long date) 第一个实例: imp ...
- Solidworks草图或者特征无法删除怎么办
单击重新建模之后即可删除.
- Linux Java开发环境
一.旧版本JDK卸载 1.卸载系统自带JDK版本 #rpm -qa|grep gcj 查看到如下信息,如图所示: 进行卸载默认安装JDK: #rpm -e --nodeps java-1.4.2- ...
- shell脚本检测网络是否畅通
shell初始化安装脚本执行时,需从网络上安装一些rpm包,所有需要先检测网络的畅通性, 代码 #检测网络链接&&ftp上传数据 function networkAndFtp() { ...
- xcode 项目证书跟签名都正确的时候,还报证书错误
原因,安装证书错误,导致无法匹配证书, 方案:删除原来的证书,重新安装 打开终端 1.cd Library/ 2.cd MobileDevice/ 3.open Provisioning\ Profi ...
- C#开发--FTP操作方法管理
1.整理简化了下C#的ftp操作,方便使用 1.支持创建多级目录 2.批量删除 3.整个目录上传 4.整个目录删除 5.整个目录下载 2.调用方法展示, var ftp ...
- mysql主从从
1.从官网下载安装percona-xtrabackup2.xtrabackup只能备份和恢复innodb的表,所以这里用innobackupex,可以实现对myisam和innodb的表在线备份和恢复 ...
- Python学习笔记(一)三步走安装pip
pip是用来方便地管理Python的第三方包的,由于此前玩Python仅仅是浅尝辄止,用的是python(x,y),但是这里并不代表你想用什么包都能从里面找到的,所以我把python(x,y)卸了,然 ...
- vim与windows/linux之间的复制粘贴小结
vim与windows/linux之间的复制粘贴小结 用 vim这么久了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后再用vim打开 ...