C语言指针详解

文章详细介绍了内存的管理机制,包括内存单元的编号与地址的概念,以及32位和64位机器上内存地址的表示和指针变量的大小。在32位系统中,内存最大可管理4GB空间,而指针变量占用4个字节;在64位系统中,指针变量占用8个字节。
摘要由CSDN通过智能技术生成

目录

1.内存

a.内存的管理

2.指针变量的大小


1.内存

内存是电脑上的存储器,计算机中的程序运行都是在内存中进行的。

a.内存的管理

内存首先是被划分成一个个的内存单元,每一个内存单元是一个字节的大小,并且每一个内存单元都有对应的编号但编号又是多少呢?

这就与我们的电脑硬件有关了,假设我们电脑是32位机器,那么在32位机器上就有32根地址线(电线),在运行时会被通电,也就产生了高电频与低电频两种电信号,转换成数字型号就是

0和1两种。又因为是在32根地址线上,那么很容易知道会有2的32次方种情况,那么也就是我们的内存单元的编号了。

那么2的32次大小的编号可以管理多少内存呢?

那就是 (2^32)/1024/1024/1024=4GB的内存空间。

 而内存单元的编号就是一个个地址,C语言中地址又被叫做指针。

举个例子:

 我们创建了整型变量a,那么就要向内存中申请四个字节的空间,也就是四个内存单元,而我们的每个内存单元都有一个对应的编号(地址),那么哪一个才是我们a的地址呢?

 看数据图,这四个内存单元确实都有编号(地址),而0x0043FCB0才是a的地址,那么

得出结论:最小的那个编号就存放着a的地址,但四个内存单元一起储存a(10)的

我们再看看内存中的数据 0x00 00 00 0a,为什么是用十六进制数字呢?

内存中本来放的是二进制的数字,但为了更好的展示出来,是用十六进制的数字展示的。

而地址(指针)又存在哪里呢?

 p是用来存地址的也就是存放指针的,我们就叫p为指针变量,类型是 int*

int:说明p指向的a是int类型的。

*:说明p是指针变量是用来存放地址的。

 我们也可以通过访问a的地址去找到a呢。

2.指针变量的大小

我们已经知道指针变量是存放指针(地址)的,那指针变量的大小应该是多少呢?

 提前声明一下我这是64位机器。

为什么会是8呢?

指针变量是存放地址的,而地址又是我们前面提到的编号。因为我这是64位机器,那么说就是有64根地址线(电线),所以存储这样的地址需要64个bit位的空间,也就是八个字节

那么32位机器就需要4个字节存储地址,所以说32位机器上指针变量的的大小就是4个字节。

这里补充一点:平常我们口语说的指针,通常指的是指针变量,是用来存放内存地址的变量

这是初始的解释,接下来如果我还有新的领悟与学习,那么我会再更的噢!

如果觉得写的还行那就三连鼓励一波吧!如果觉得哪里有问题的请留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CR0712

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值