《程序是怎么跑起来的》第四章 熟悉使用内存

计算机是进行处理数据的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘

4.1 内存的物理机制

内存实际上是一种名为内存IC的电子元件,虽然内存IC包括RAM,ROM等多种形式,但从外部讲,其基本机制都是一样的
RAM 读写型:分为需要经常刷新保存数据的DRAM和不需要刷新电路就能保存的SRAM
ROM 只读型:一种只能读的内存

内存IC中有电源,地址信号,数据信号,控制信号等用于输入输出的大量IC引脚,通过为其指定地址来进行数据的读写

一个可以存储1024个1字节数据的内存IC:
在这里插入图片描述
将电源连接到VCC和GND后,就可以给其它引脚传递0或1这样的信号。数据信号引脚有D0-D7,表示一次可以输入输出8位(1字节)的数据。地址信号引脚有A0-A9,表示可以指定0000000000-1111111111共1024个地址,地址就是用来存储数据的场所

向内存IC中写入和读取数据的方法:

在这里插入图片描述
使用A0-A9的地址信号来指定数据的存储场所,然后将数据的值输入给D0-D7的数据信号,并把WR信号设为1,就可完成写的操作

使用A0-A9的地址信号指定数据的存储场所,将RD信号设为1后,指定地址中存储的数据就会被输出到D0-D7的数据信号引脚中

WR(write),RD(read) 这样可以让IC运行的信号称为控制信号,当WR和RD均为0时,写入和读出的操作都无法进行

4.2 内存的逻辑模型

虽然内存的实体是内存IC,不过从程序员的角度来看,也可以将它假想成每层都存储着数据的楼房。数据类型从内存的角度来看,就是占用内存的大小

通过使用变量,即使不指定物理地址,也可以在程序中对内存进行读写,这是因为,在程序运行时,Windows等操作系统会自动决定变量的物理地址

在这里插入图片描述

4.3 简单的指针

指针也是一种变量,它表示的不是数据的值,而是存储着数据的内存的地址,通过使用指针,就可以对任意地址的数据进行读写

在这里插入图片描述

4.4 数组是高效使用内存的基础

数组是多个同样数据类型的数据在内存中连续排列的方式,作为数组元素的各个数据会通过连续的编号被区分开,这个编号称为索引。指定索引后,就可以对索引对应地址的内存实现读写操作,而索引和内存地址的变换工作则是由编译器自动实现的。数组定义中指的数据类型,表示一次能够读写的内存大小

在这里插入图片描述

4.5 栈,队列及环形缓冲区

栈先入后出,队列先入先出
如果在内存中留出栈和队列所需要的空间,并确定好写入和读取的顺序,就不需要指定地址和索引了

在这里插入图片描述

在这里插入图片描述

4.6 链表

在这里插入图片描述

4.7 二叉树

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值