| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++ Primer学习记录(6) -> 正文阅读 |
|
[C++知识库]C++ Primer学习记录(6) |
有件事我很不理解,既然CSDN的网页版要好于手机软件,那为什么一直让我去下载软件呢?拿手机上CSDN浏览器搜东西都正常的很,想拿手机看点儿文章就卡个半天加载不出来,离大谱了属于是。 今天就按照昨天说的,说一说引用和指针吧: 一.符号说明: 引用和指针对应的符号分别为&(连号符)和*(星号符),这两个符号本身其实属于操作运算符,对应的功能分别是取址和取值。 当我们定义一个变量时,需要开辟一个空间去储存变量并对其操作,空间大小据数据类型而定。打个比方,我们把这个空间比作一个房子,空间中储存的值比作住在房子里的人,变量的地址即房子建造时坐落的地址。当我们输出一个变量时,默认输出它的值(因为这就是变量的核心意义),如果我们想要知道变量的地址,便可以通过取址符&来得到这座房子的地址,自然也就可以稳定地对地址对应的内容进行操作。同理,当我们知道了一个变量的地址,我们可以通过取值符*来获取该地址中储存的内容,也就是通过居住的地址找到我们想找的人。 所以一个变量可以分为值和址两部分基础类型,数据类型用来描述和限定值的类型,而引用和指针则是说明该变量的基础类型。除指针外,其他的变量定义本质都是变量的值,而指针型变量的本质则是变量的地址。
二.引用: 刚刚分别对两种符号做了简单的介绍,这里则要涉及到这两种符号的特殊用法:在定义变量时起到类似于关键字的作用,即一种特定的类型标志。 1.定义: 引用型变量的定义:数据类型 &变量名2?初始化(变量名1) 这里的&则不再视为取址操作的运算符,因为这是一个定义语句,我们不能在房子还没建好的时候就得到它的具体地址。在这里,&视作一种标志,说明该变量属于引用型变量。 2.意义: 对于引用型变量的意义,我们只需要记住一句话:引用就是别名。 怎么理解这句话呢?很简单,我们只需要理解别名是什么就好了。 称呼一个人的方式有很多种,其中除了本来姓名之外的称呼就是别名。如:我本名是张x超,有人叫我小张,也有人叫我超哥。其中,除去我本来姓名之外的另外两种称呼即我的别名。名字却可以有很多,但是我只有一个,每当有人称呼这两个别名时,我就知道他们是在叫我。 引用就是这么个道理。我们先定义了一个变量a的同时,可以再定义一个引用型变量b去等同于a(变量名不能相同),而后我们对b进行操作即对a进行操作,即用不同的名字操作同一个变量。引用型变量是必须初始化的,而且初始化的方式必须是通过另一个变量来初始化。
3.与普通定义的异同: 一般定义一个变量时都是需要开辟新空间的,但是引用却不是,它是直接生成于其引用对象上的空间上的,就像别名不能脱离人这个本体而单独存在。 如上图,引用型变量b的地址完全等同于原变量a,相当于在同一个房子中对同一个人进行操作,只是称呼方式不一样罢了。同时,引用型变量的本质和普通变量一样,都是一个值。? 三.指针: 类似于引用型变量对符号的特殊使用,指针也是一样。 1.定义: 指针型变量的定义:数据类型 *变量名 (初始化) 这里的*也不再被理解为取值操作的运算符,而是说明该变量的类型为指针型的标志。 2.意义: 对于指针型变量的理解,我们也需要记住一句话:指针就是地址。 对这句话可以这么理解:每当定义一个变量,都需要开辟空间,而这个空间一旦开辟完成,则位置固定不动。指针型变量针对的就是这个空间所在的位置,其数据类型依然是用于描述并限定该空间中值的类型。
可以看到,在将指针型变量b指向普通变量a之后进行各项输出,普通变量a输出了值6,指针型变量b则输出了a的地址,?而对b进行取址操作之后才输出了a的数值6。指针在定义的时候如果不初始化,则一般默认指向NULL(空),但是由于编译器的标准可能不同,保险起见在定义指针时最好人为让它成为一个空指针,避免因为指向不明产生野指针,导致未知错误:
nullptr是C++的关键字,即空指针。? 也可以从另一个角度去理解指针:指针就好比我们电脑上的光标,当我们通过鼠标操作光标,将其指向某个软件或网页时,我们就可以实际对其进行一系列操作。而光标不指向任何事物时,则认为它指向NULL,即空指针。 3.与普通定义的异同: 指针型变量在定义时可以选择初始化与否,这也说明不同于引用型变量,它是可以独立存在的。当我们通过&取得其他变量的地址,并将之赋给指针型变量时,我们称该过程为将指针型变量指向某个变量。当获取其它变量的地址时,自然也就可以通过指针型变量来实际影响其它变量。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:35:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |