三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

函数与扩容

函数与扩容

函数与扩容

    • 扩容背景
    • 具体操作

扩容背景

  1. 原理:在C语言中,常规定义的数组在初始化之后,长度是不可变的,且数组名存储的是数组首地址,不支持重新赋值为其他数组的地址
  2. 思路:
    (1)数组定义之后长度不可变,因此需要再创建一个更大的数组
    (2)将原数组的数据逐一迁移到新数组中
    (3)利用指针变量存储新分配内存的首地址,通过指针加下标的形式来操作所有数据

具体操作

  1. 添加数据与扩容函数 :
    当仓库存满时,触发扩容机制,并将旧数据迁移到新数组:
int*addData(intnum,intvalues[],int*size,int*length){intlen=*length;intsi=*size;// 先判断是否存满了if(si==len){// 需要扩容intnewLen=len*2;int*newValues=(int*)malloc(newLen*sizeof(int));// 迁移数据for(inti=0;i<len;i++){newValues[i]=values[i];}// 更新数据*length=newLen;// 更新旧数组名存储的地址values=newValues;printf("扩容完成,当前的总容量升级为: %d\n",*length);}values[si]=num;*size=*size+1;// values 存储的是一个新数组的地址,返回出去重新赋给 main 里面的 valuesreturnvalues;}
  1. 将函数加入数字仓库
← 返回列表