创建一个动态数组可以从动态内存分配上去考虑,尤其是,动态数组本质上就是动态分配内存空间
动态数组的创建:
以一个结构体为例
将动态数组放入到设置好的一个结构体当中
struct shuzu
{
int*shou;定义数组的首地址
unsigned int rongliang
unsigned int shuliang
};
动态数组的初始化:
主要采用调用函数malloc对动态数组进行初始化
采用调用函数void user(struct shuzu *pr)
{
pr->rongliang=5;设置容量大小
pr->shou=(int*)malloc(sizeof( int)*rongliang) 调用malloc函数动态分配空间并返回给首地址
pr->shuliang=0;
}动态数组的初始化主要通过指针去访问结构体中的成员,并对其进行赋值或者分配内存空间
动态数组增添元素:
增添元素分位两种情况1:如果数组的容量未满,能够满足增添元素的数量要求,那么可以通过指针访问结构体中首地址的方式采用for循环依次赋值给未使用的数组空间
2:如果数组容量已经满,那么需要通过调用malloc函数给数组增加空间,在采用for循环依次赋值新的元素
动态数组的中间元素插入
中间元素插入首先设置下标(即要插入的位置)将下表后面的元素依次向后移动一位(不建议向前移动)最后将新元素插入下标位置
这里考虑两种情况1数组容量够用2数组容量不够用,那么需要增加动态数组容量才进行插入方式
动态数组的删除,主要分为两种情况1是删除尾部,2是删除中间部分,3是全部删除,删除尾部主要通过对结构体成员数量减去,使得首地址下表访问向前移动,
我们以最开始结构为例调用一个void shanchuwei(struct shuzu *pr)
{
pr->shou[shuliang];
shuliang-=x;//x表示删除元素个数
}
voidshanchuquan(struct shuzu *pr)
{
pr->shou[shuliang]
shuliang=0;
}