本篇文章将讲解:
(1)内存和地址
(2)指针变量和细致
(3)指针变量类型的意义
一:内存和地址
(1)内存
在讲内存和地址之前,我们讲一个生活中的案例:
假设有一栋宿舍楼,把你放在楼里,楼上总共有100间房间,但是房间没有编号,你的一个朋友来找你玩,如果想找到你,就得挨个房间找,这样效率很低,但是如果我们根据楼层和楼层房间的情况,给每个房间编上号,如:
一楼:101,102,......
二楼:201,202,......
...
有了房间号,如果你的朋友得到你的房间号,就可以快速的找到你的房间,从而找到你。
生活中,每个房间有了房间号,就能提高效率,能快速的找到房间。
如果把上面的例子对照到计算机中,又是怎样呢?
我们知道计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存是如何高效的管理呢?
其实也是把内存划分为一个个的内存单元,每个内存单元的大小取1个字节。
计算机中常见的单位:
1byte=8bit
1kb=1024byte
1Mb=1024kb
1Gb=1024Mb
1Tb=1024Gb
1Pb=1024Tb
一个比特位可以存储一个二进制的位1或0;
生活中我们把门牌号也叫地址,在计算机中我们把内存单元的编号也称为地址。C语言中给地址起了新的名字:指针。
所以我们可以理解为:内存单元的编号==地址==指针
(2)地址
二:指针变量和地址
1、取地址操作符(&)
理解了内存和地址的关系,我们在C语言中创建变量就是其实就是向内存中申请空间。
例如:上述代码就是创建了整型变量,内存中申请了四个字节,用于存放整数10,其中每个字节都有地址,上图中四个字节的地址(以十六进制形式显示)分别是:
0x000000389691FBC4
0x000000389691FBC5
0x000000389691FBC6
0x000000389691FBC7
那么如何获得变量的地址呢?
操作符(&)---取地址操作符
例如:
注意:&a取出的a所占4个字节中地址较小的字节的地址。