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

数组是高效使用内存的基础,下面让我们回到主题,解释一下本章标题中出现的“熟练使用有棱有角的内存”。在熟练使用前,我们先来看一下内存最直接的使用方法。在这里,我们要用到数组。

数组是指多个同样数据类型的数据在内存中连续排列的形式。作为数组元素的各个数据会通过连续的编号被区分开来,这个编号称为索引(index)。指定索引后,就可以对该索引所对应地址的内存进行读写操作。而索引和内存地址的变换工作则是由编译器自动实现的。

代码清单4-3表示的是在C语言中定义char类型、short类型和long类型这三个数组。用括号围起来的[100],表示数组的元素有100个。由于在C语言中,数组的索引是从0开始的,因此,char g[100];表示的就是可以使用g[0]~g[99]这100个元素。
代码清单4-3 各种类型的数组定义

char g[100];             //char类型数组g的定义
short h[100];            //short类型数组h的定义
long i[100];             //long类型数组i的定义

数组的定义中所指定的数据类型,也表示一次能够读写的内存大小。char类型的数组以1个字节为单位对内存进行读写,而short类型和long类型的数组则分别以2个字节、4个字节为单位对内存进行读写。数组是使用内存的基本。本章后半部分会讲述各种各样的内存使用技能,其中每一种都需要以数组为基础。

之所以说数组是内存的使用方法的基础,是因为数组和内存的物理构造是一样的。特别是1字节类型的数组,它和内存的物理构造完全一致。不过,如果只能逐个字节地来读写,程序就会变得比较麻烦,因而可以指定任意数据类型来定义数组。这和将1层=1单元的楼房改造成多个楼层=1单元的楼房是同一个道理(图4-6)。

数组是高效使用内存的基础
图4-6 不同数据类型的数组

使用数组能够使编程工作变得更加高效。如果在反复运行的循环处理中使用数组,很短的代码就能达到按顺序读出或写入数组元素的目的。不过,虽然是通过指定索引来使用数组,但这和内存的物理读写并没有特别大的区别。因此很多程序都会在数组的使用上花费大量工夫。接下来,我们就向大家介绍一下栈、队列、链表和二叉查找树这些数组的变形方法。对于一名优秀的程序员来说,不仅要了解,还要会灵活使用这些方法。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!