一、内存的物理机制
1、内存的作用:计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。
2、内存的概念:内存实际上是一种名为内存IC的电子元件。
3、内存的形式:包括DRAM、SRAM、ROM等多种形式。
(1、ROM(Read Only Memory)是一种只能用来读取的内存。
2、RAM(Random Access Memory)是可被读取和写入的内存,分为需要经常刷新(refresh)以保存数据的DRAM(Dynamic RAM),以及不需要刷新电路即能保存数据的SRAM(Static RAM)。
)
4、内存IC引脚:内存IC中有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚(IC的引脚),通过为其指定地址(address),来进行数据的读写。
示例:内存IC(在这里假设它为RAM²)的引脚配置示例。
5、向内存IC中写入和读出数据的方法
二、内存的逻辑模型
1、内存的逻辑模型是楼房样:
2、数据类型:包含着物理内存中不存在的概念,那就是数据类型。编程语言中的数据类型表示存储的是何种类型的数据。
3、数据类型种类:表示1字节长度的char,表示2字节长度的short,以及表示4字节长度的long。
①在C语言中,int这一数据类型经常会用到。int也是CPU最容易处理的数据类型的长度。在32位的CPU中,int是32位的。在以前的16位的CPU中,int是16位的。
②将多字节数据的低位字节存储在内存低位地址的方式称为低字节序,与此
相反,把数据的高位字节存储在内存低位的方式称为高字节序。本章的示例图中使用的是奔腾等英特尔处理器所采用的低字节序方式。
4、变量的数据类型不同,所占用的内存大小也不一样
三、指针
1、概念:指针也是一种变量,它所表示的不是数据的值,而是存储着数据的内存的地址。
2、作用:通过使用指针,就可以对任意指定地址的数据进行读写。
3、各种数据类型指针的定义
4、指针的数据类型表示一次可以读写的长度
四、数组
1、概念:数组是指多个同样数据类型的数据在内存中连续排列的形式。
2、索引:作为数组元素的各个数据会通过连续的编号被区分开来,这个编号称为索引(index)。指定索引后,就可以对该索引所对应地址的内存进行读写操作。而索引和内存地址的变换工作则是由编译器自动实现的。
3、数组类型:在C语言中定义char类型、short类型和long类型这三个数组。
4、各种类型的数组定义
数组是使用内存的基本。数组的定义中所指定的数据类型,也表示一次能够读写的内存大小。char类型的数组以1个字节为单位对内存进行读写,而short类型和long类型的数组则分别以2个字节、4个字节为单位对内存进行读写。
5、不同数据类型的数组
五、栈、队列以及环形缓冲区
1、概括:栈和队列,都可以不通过指定地址和索引来对数组的元素进行读写。需要临时保存计算过程中的数据、连接在计算机上的设备或者输入输出的数据时,都可以通过这些方法来使用内存。如果每次保存临时数据都需指定地址和索引,程序就会变得比较麻烦,因此要加以改进。
2、简介:栈和队列的区别在于数据出入的顺序是不同的。在对内存数据进行读写时,栈用的是LIFO(Last Input First Out,后入先出)方式,而队列用的则是FIFO(First Input First Out,先入先出)方式。
3、示例:
(1)使用栈的程序示例:
运行时栈的变化:
(2)使用队列的程序示例:
运行时队列的变化:
(3)环状缓冲区的模型:
六、链表对元素的追加和删除
1、链表:在数组的各个元素中,除了数据的值之外,通过为其附带上下一元素的索引,即可实现链表。
2、作用:可以更加高效地对数组数据(元素)进行追加和删除处理。
3、示例:
(1)链表的示例(初始状态):
(2)链表删除:
(3)链表追加:
4、单纯使用数组的情况
(1)元素的删除:
(2)元素的追加: