指针第一部分(内存、指针、指针变量的浅析)---- 2021.1.27

内存

其实很多人对内存的概念都是模糊不清,没有一个比较通俗易懂的解释。众所周知,例如我们在计算机上使用编译器进行编译代码时,往往计算机会做一个这样的工作:为被编译的程序在内存上分配一块内存空间,那怎么理解这句话呢?

首先我们需要在大脑中构想出一块区域,这个区域就是内存,可以用来存储数据。32位编译器内存示意图如下图所示。

在这里插入图片描述
对上图解释如下:

  1. 32位用16进制表示为0x0000 0000。
  2. 内存的空间是由一个一个字节组成的,且每个字节都会有其对应的地址编号,如图中的0x0000 0000—0xffff ffff。
  3. 内存中的每一个数据都会分配相应的地址。比如:char:占一个字节分配一个地址,相应的也就只会分配一个地址编号。int:占四个字节分配四个地址,相应的也就只会分配四个地址编号。

指针

由上述可知,每个字节都会有一个编号,其实这就是“地址”。举个例子,比如,小明同学通过电话告知我们他在九号楼308房间。那我们可以通过这个位置信息准确的找到小明同学。这里的九号楼308房间其实就是指针。能够起到将我们成功带向九号楼308房间方向的作用。

所以,指针的实质就是内存空间中的地址编号,也就是指针就是地址,地址就是指针

指针变量

32位编译器:

例如我们定义了一个整型变量a。(int a)
顾名思义,整型变量就是存放整数的变量。那我们举一反三,指针变量就是存放指针(地址)的变量。
例如我们定义了一个指针变量p。(指针类型 p)
因为上面说了指针变量就是存放指针(地址)的变量,所以之前也提到了,地址编号类似于(0x0000 0000),那么我们的指针变量占4个字节就可以存下。那么64位是多少呢?

64位编译器:
64位的地址编号范围为0x0000 0000 0000 0000----0xffff ffff ffff ffff ,所以其对应的指针变量占8个字节就可以存下。

结束语

如果觉得这篇文章还不错的话,记得点赞 ,支持下!!!

猜你喜欢

转载自blog.csdn.net/qq_40544107/article/details/113280466