程序是怎样跑起来的(4)
这个章节讲的是内存。
内存实际上是一种名为内存的IC的电子元件。内存一般指的都是运行内存,临时读取的内存,而大部分人都习惯性吧外存当做内存,外存也就硬盘,是用来存储数据的硬盘,外存中的数据不会随着断电而消失,而内存中的数据并不会被存储,断电后就会消失。
VCC和GND是电源,RD和WR是控制信号的引脚。
内存IC中有 数据信号引脚D0D7共八个;地址信号引脚A0A9共十个;表示可以指定1024个地址。
程序的逻辑模型是楼房,在这个楼房中,1层可以存储1个字节的数据,楼层号表示就是地址。
指针也是一种变量,它所表示的不是数据的值,而是存储着数据的内存地址。通过指针就可以对任意指定地址的数据进行读写。定义指针的时候通常会在变量名前加上一个星号(*)。 而给指针指定的数据类型表示从指针存储的地址中一次能读写的数据字节数。
数组是指多个同样数据类型的数据在内存中连续排列的形式。作为数组元素的各个数据会通过连续的编号被区分开来。这个编号成为索引(index)。指定索引后就可以为该索引地址的内存进行读写操作。而索引和内存地址的变换工作则是由编译器自动实现的。
栈和队列,都可以不通过指定地址和索引来对数组的元素进行读写。需要临时保存计算过程中的数据、连接在计算机上的输入设备或输出数据时,都可以通过这些方法来使用内存。如果每次保存临时数据都需指定地址和索引,程序就会变得比较麻烦。栈和队列的区别在于数据出入的顺序是不同的。在对内存数据进行读写时,栈用的是后入先出的方式,而队列用的则是先入后出的方式。如果我们在内存中预留出栈和队列所需要的空间,并确定好写入和读出的顺序,就不用再指定地址和索引了。
通过使用链表,可以更加高效地对数组数据进行追加和删除处理。通过使用二叉查找树,则可以更加高效地对数组数据进行检索。在数组的各个元素中,除了数据的值之外,通过为其附带上下一个元素的索引,即可实现链表。数据的值和下一个元素的索引组合在一起,就构成了数组的一个元素。在需要追加或删除数据的情况下,使用链表是很高效的。
二叉查找树,是指在链表的基础上往数组中追加元素时,考虑到数据的大小关系,将其分成左右两个的表现形式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律