深入了解指针(一)

一.内存和地址
二指针变量和地址

三 究竟该如何理解编址
四指针变量的⼤⼩
五&和*

一.内存和地址

先了解内存中最小的单位——————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个字节)

五&和*

int a = 0;
int* pp = &a;
printf("%p",pp);

在这里插入图片描述
这是把a的地址取出来放到指针变量pp中

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

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值