C语言建立动态数组
数组的有点在于随机存取,然而其不足也是明显的,就是一旦建立其大小就不能改变。若用数组存储数据,则必须创建一个可能存放的最大空间的数组,这无疑浪费了空间。动态数组解决了这个问题。动态数组的思路是:先建立一定大小的数组,向这个 数组中存放数据,如果数组已满,则重新申请一个更大的空间来存放。每次重新申请时可以指定增量(inc)的大小,也可以固定大小。这样做的好处是空间浪费不多,最多浪费(inc-1)个元素空间,其不足是重新申请空间浪费时间,每次重新申请空间时须将原来的数据拷贝到新申请的空间,当数组很大时,这种浪费还是相当可观的。稍后将用链表和数组结合解决这一问题。
先建立动态数组的存储结构:
typedef unsigned char BOOL;
typedef int elem_t;
//存放数据类型
//存放数据类型
typedef
struct

...
{
int iCount; //数据个数(数组中实际存放元素的个数)
int iCapacity; //容量(数组中能够容纳元素的最大个数)
elem_t * pData; //数据指针(该指针指向存放数据空间的首地址)
}
Array_t;

...
{
int iCount; //数据个数(数组中实际存放元素的个数)
int iCapacity; //容量(数组中能够容纳元素的最大个数)
elem_t * pData; //数据指针(该指针指向存放数据空间的首地址)
}
Array_t;
下面定义数组的基本操作,包括:
1、初始化;
2、设置元素的值;
3、取得元素的引用(C语言中指地址);
4、取得元素的值;
5、销毁数组
以下是上面五个操作的函数声明:
BOOL initArray( Array_t
*
array,
int
size );
//
初始化,size为指定初始化数组容量
BOOL setValue( Array_t
*
array,
int
index, elem_t val );
//
设置指定位置元素的值

本文介绍了C语言如何创建动态数组,动态数组通过在内存中动态分配空间以解决静态数组大小固定的局限。文中详细阐述了动态数组的存储结构设计,包括初始化、设置元素值、获取元素值、获取元素引用及销毁数组等基本操作的实现。后续内容会探讨动态数组的高级操作,如遍历、查找、排序和拷贝等。
最低0.47元/天 解锁文章
5万+





