万字完整版【C语言】指针详解~
一、前言
- 初始指针(0):着重于讲解指针的概念、基本用法、注意事项、以及最后如何规范使用指针
- 深入指针(1):讲解指针变量常见的类型,如何去理解这些类型、最后就是如何正确的使用
- 深入指针(2):讲解指针较为高阶的用法,理解难度 中度
- 深入指针(3):在(2)的基础上,再讲解其余指针类型的高级用法,理解难度 偏难
- 深入指针(4):指针相关的题目、及答案。理解难度 中度
二、初识指针(0)
1.内存与地址
- CPU(中央处理器),需要向内存读取数据,处理完数据后,还需要将数据放回到内存中,那CPU是如何从内存找到他自己想要的数据呢?
- 现实中,我们去向宾馆申请一间房间,前台的服务人员,会给我们找出一间闲置的空间供给我们使用,并返回给我们一个房卡。那她是如何快速的找到一间闲置的空间呢?那是因为每一间闲置的空间都有编号。当我们不用的时候,她们就会收回这间屋子的使用权。
- 我们将CPU抽象为前台服务人员,把内存抽象为宾馆的房子,把CPU读取数据抽象为去宾馆申请房子,把CPU返回数据抽象为收回这间屋子的使用权......
- 我们就可以推断出,内存也被划分了很多个内存单元,每一个内存单元有自己的专属编码
- 结论:内存被划分为很多个大小为一个字节的内存单元,每一个内存单元都有相对应的内存编码,内存编码又叫做地址。CPU处理数据的时候,则是根据地址去找到所需的数据。
2.指针变量与地址
- 有时候,我们自己要处理数据的时候,也必不可少要用到地址,所以C语言允许我们获得变量的地址,并使用地址,或者通过地址找到该数据,进行使用。
- C语言规定了一个指针变量,专门用来存储数据地址,并且有两个操作符(取地址操作符&,解引用操作符*)。
- 下面是其简单的使用:
- 结论:内存单元编码 == 地址 == 指针
3.指针类型的刨析
i.指针的理解
-
(type) * p;
- p ->p是一个变量
- * ->变量p前面的(*),说明它是一个指针类型的变量
- type->说明了指针变量p,所指向对象的类型
ii.指针在空间的大小
- 了解过音乐的都知道,音乐有这几个音阶(do、re、mi、fa、sol、la、si),在钢琴制作的时候,也没有把哪个键标记下音阶,那演奏家是如何找到音阶的吗?那是因为音阶的分布是被死规定过的,且是公认的,无论哪几种钢琴,它的音阶所在按键位置是不变的。
- 事实上,内存单元的编号也被按照某种标准的规定所设定,计算机中存在地址线,正电流表示二进制1,负电流表示二进制0;在32位平台上,由32根地址线的表示一个内存单元的地址,也就是一个整型,在64位平台上,由64根地址线的表示一个内存单元的地址,也就是两个整型。
- (int)类型在内存中占据4个字节,但我们取它地址的时候,常用第一个内存单元的地址,作为该int类型的地址。
- 小结:在32位平台上,地址由32比特位构成,也就是1个(int)类型的大小,4个字节;在64位平台上,地址由64位比特位构成,也就是2个(int)类型的大小,8个字节。无论什么类型的指针,只要是用来存放地址的,其指针类型的字节大小只与平台有关->(4/8)。
iii.指针类型有什么用?
-
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。