深入了解指针(一)

深入了解指针(一)

一.内存和地址

先了解内存中最小的单位——————byte-字节

由小到大内存中分为

bit - ⽐特位

byte - 字节

KB

MB

GB

TB

PB

其中1byte = 8bit

1KB = 1024byte

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

二指针变量和地址

我们平常说的指针的全称叫做指针变量,在内存中可以形象的表示为发

其中每一层为一个字节。那么我们如何使用内存中地址?

这就要用到取地址操作符&和解引用操作符,以后会讲解。

三 究竟该如何理解编址

CPU访问内存中的某个字节空间,必须知道这个字节空间在内存的什么位置,⽽因为内存中字节很多,所以需要给内存进⾏编址(就如同宿舍很多,需要给宿舍编号⼀样)。不过,我们今天关⼼⼀组线,叫做地址总线。我们可以简单理解,32位机器有32根地址总线,每根线只有两态,表⽰0,1【电脉冲有⽆】,那⼀根线,就能表⽰2种含义,2根线就能表⽰4种含义,依次类推。址线,就能表⽰2^32种含义,每⼀种含义都代表⼀个地址。地址信息被下达给内存,在内存上,可以找到该地址对应的数据,将数据在通过数据总线传⼊CPU内寄存器。

比如我有一台32位地址总线的电脑是232byte=235bit

4GB = 22 GB = 212 MB = 222 KB = 232 byte = 235 bit

所以32位地址总线的电脑最多只能访问4GB的内存

四指针变量的⼤⼩

指针变量的⼤⼩取决于地址的⼤⼩

32位平台下地址是32个bit位(即4个字节)

64位平台下地址是64个bit位(即8个字节)

五&和*

代码语言:javascript代码运行次数:0运行复制int a = 0;

int* pp = &a;

printf("%p",pp);

这是把a的地址取出来放到指针变量pp中

pp变量定义时候要加*:int *pp。用%p打印p也就是a的地址为如图。

相关推荐

[正式服]魔兽世界11.07
矿泉喷雾的这几种用法,你懂吗?
365bet中文官方网站

矿泉喷雾的这几种用法,你懂吗?

📅 07-23 👁️ 3376
如何在微信中删除照片,彻底清理聊天记录
365bet中文官方网站

如何在微信中删除照片,彻底清理聊天记录

📅 06-30 👁️ 6974
【一球成名】一位37岁老将,一个国家的世界杯首球
男篮世界杯决赛对阵出炉!男篮世界杯决赛赛程时间表!附央视直播
从 PC 卸载 Office
求正规英国365网址

从 PC 卸载 Office

📅 07-04 👁️ 6510