还有一件事情我需要重申一下:
我们在保存一组数据时会使用以下三种方式:静态数组,动态数组和动态链表
?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;
?
在接下的程序中,我将会大量用到这三种方式。所以一定要搞明白。
?
还有一个附加问题是,如何得知保存的一组数据的具体个数呢?