(持续更新中!!~)11、原来可以这样理解C语言_深入理解指针(1/8)内存和地址

目录

1. 内存和地址

1.1 内存

1.2 究竟该如何理解编址


1. 内存和地址

1.1 内存

        在讲内存和地址之前,我们想有个⽣活中的案例:

        有⼀栋宿舍楼,把你放在楼⾥,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找你玩, 如果想找到你,就得挨个房⼦去找,这样效率很低,但是我们如果根据楼层和楼层的房间的情况,给 每个房间编上号,如:

一楼:101,102,103...

⼆楼:201,202,203.... 

.......

        有了房间号,如果你的朋友得到房间号,就可以快速的找房间,找到你。

        ⽣活中,每个房间有了房间号,就能提⾼效率,能快速的找到房间。

        如果把上⾯的例⼦对照到计算机中,⼜是怎么样呢?

        我们知道计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的 数据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存空间如何 ⾼效的管理呢?

        其实也是把内存划分为⼀个个的内存单元,每个内存单元的⼤⼩取1个字节。计算机中常⻅的单位(补充): ⼀个⽐特位可以存储⼀个2进制的位1或者0

1byte = 8bit

1KB = 1024byte

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

         其中,每个内存单元,相当于⼀个学⽣宿舍,⼀ 个字节空间⾥⾯能放8个⽐特位,就好⽐同学们住 的⼋⼈间,每个⼈是⼀个⽐特位。

        每个内存单元也都有⼀个编号(这个编号就相当 于宿舍房间的⻔牌号),有了这个内存单元的编 号,CPU就可以快速找到⼀个内存空间。

        ⽣活中我们把⻔牌号也叫地址,在计算机中我们 把内存单元的编号也称为地址。C语⾔中给地址起 了新的名字叫:指针。 所以我们可以理解为:

内存单元的编号==地址==指针

1.2 究竟该如何理解编址

        CPU访问内存中的某个字节空间,必须知道这个 字节空间在内存的什么位置,⽽因为内存中字节 很多,所以需要给内存进⾏编址(就如同宿舍很多,需要给宿舍编号⼀样)。计算机中的编址,并不是把每个字节的地址记录 下来,⽽是通过硬件设计完成的。 钢琴、吉他上⾯没有写上“剁、来、咪、发、 唆、拉、西”这样的信息,但演奏者照样能够准 确找到每⼀个琴弦的每⼀个位置,这是为何?因 为制造商已经在乐器硬件层⾯上设计好了,并且 所有的演奏者都知道。本质是⼀种约定出来的共识!

        ⾸先,必须理解,计算机内是有很多的硬件单 元,⽽硬件单元是要互相协同⼯作的。所谓的协 同,⾄少相互之间要能够进⾏数据传递。 但是硬件与硬件之间是互相独⽴的,那么如何通 信呢?答案很简单,⽤"线"连起来。 ⽽CPU和内存之间也是有⼤量的数据交互的,所 以,两者必须也⽤线连起来。 不过,我们今天关⼼⼀组线,叫做地址总线。

        硬件编址也是如此 我们可以简单理解,32位机器有32根地址总线, 每根线只有两态,表⽰0,1【电脉冲有⽆】,那么 ⼀根线,就能表⽰2种含义,2根线就能表⽰4种含 义,依次类推。32根地址线,就能表⽰2^32种含 义,每⼀种含义都代表⼀个地址。 地址信息被下达给内存,在内存上,就可以找到 该地址对应的数据,将数据在通过数据总线传⼊ CPU内寄存器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值