日期:2014-05-16  浏览次数:20403 次

简易内存数据库(二)保存一组数据

还有一件事情我需要重申一下:

我们在保存一组数据时会使用以下三种方式:静态数组,动态数组和动态链表

?1)当我们预先知道一组数据的长度,或者是最大长度的时候,可以用静态数组,在程序编译的时候就确定了保存这一组数据的内存大小。用int作为基础类型,代码如下:

int array[MAX_COUNT];

?

?2)当我们在程序运行时才能知道一组数据的长度,或者是最大长度的时候,可以用动态数组,在程序运行时一一次性分配一整块内存。用int作为基础类型,代码如下:

?

//申明
int * array;
//实现
array = (int*)malloc(sizeof(int)*MAX_COUNT);

?3)当我们在程序运行时才能够逐步发现数组的各个元素,则可以用动态链表。在程序运行时,每次分配一个元素大小的内存,再次遇到数组元素,则再分配一个元素大小的内存。用指针把这些分散的元素链接起来就可以了。用int作为基础类型,代码如下

?

//申明
struct intlink
{
	int content;
	intlink * next;
}*head;
//实现
intlink * array1 = (intlink *) malloc(sizeof(intlink));
intlink * array2 = (intlink *) malloc(sizeof(intlink));

head = array1;
array1->next = array2;
array2->next = NULL;

?

在接下的程序中,我将会大量用到这三种方式。所以一定要搞明白。

?

还有一个附加问题是,如何得知保存的一组数据的具体个数呢?

  1. 当然,最简单的方法是增加一个变量 int count来保存这组数据的具体个数。
  2. 如果是链表的话,可以通过链表遍历获得数组的个数。
  3. 如果是静态数组的话,还可以通过sizeof(静态数组)/sizeof(数组中元素的大小)获得数组元素个数。