随笔分类 - 程序是怎样跑起来的 / 第四章 熟练使用有棱有角的内存
摘要:二叉查找树是指在链表的基础上往数组中追加元素时,考虑到数据的大小关系,将其分成左右两个方向的表现形式。 例如,假设我们事先把50这个值保存到了数组中。那么,如果接下来的值比先前保存的数值大的话,就要将其放到右边,反之如果小的话就放在左边。但实际的内存并不会分成两个方向,这是在程序逻辑上实现的(图4-
阅读全文
摘要:链表和而叉查找树,但是不用考虑索引的顺序就可以对数组元素进行读写的方式。 链表,可以更加高效的对数组元素进行追加和删除处理。 二叉查找树,可以更加高效的对数组数据进行索引。 在数组的各个元素中,除了数据的值之外,通过为其附带上下一个元素的索引,即可实现链表。( 数据的值+下一个元素的索引=一个元素)
阅读全文
摘要:栈和队列 栈和队列,都可以不通过指定地址和索引来对数组的元素进行读写。需要临时保存计算过程中的数据、连接在计算机上的设备或者输入输出的数据时,都可以通过这些方法来使用内存。如果每次保存临时数据都需指定地址和索引,程序就会变得比较麻烦。 栈和队列的区别在于:数据出入的顺序是不同的。在对内存数据进行读写
阅读全文
摘要:数组是指多个同样数据类型的数据在内存中连续排列的形式。作为数组元素的各个数据会通过连续的编号被区分开来,这个编号称为索引(index)。指定索引后,就可以对该索引所对应地址的内存进行读写操作。而索引和内存地址的变换工作则是由编译器自动实现的。 代码清单4-3表示的是在C语言中定义char类型、sho
阅读全文
摘要:指针也是一种变量,它所表示的不是数据的值,而是存储着数据的内存的地址。通过使用指针,就可以对任意指定地址的数据进行读写。虽然前面所提到的假想内存IC中仅有10位地址信号,但大家在Windows计算机上使用的程序通常都是32位(4字节)的内存地址。这种情况下,指针变量的长度也是32位。 上图清单,是定
阅读全文
摘要:虽然内存的实体是内存IC,不过从程序员的角度来看,也可以把它假想成每层都存储着数据的楼房,并不需要过多地关注内存IC的电源和控制信号等。因此,之后的讲解中我们也同样会使用楼房图(或者与楼房相似的图)。内存为1KB时,表示的是如图4-3所示的有1024层的楼房(这里地址的值是从上往下逐渐变大,不过也有
阅读全文
摘要:计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。因此,大家有必要对内存和磁盘的构造有一个物理上的(硬件的)和逻辑上的(软件的)认识。 有十个地址信号引脚的内存IC(集成电路)可以指定的地址范围用二进制数来表示
阅读全文