- 0
- 0
- 约2.24千字
- 约 4页
- 2026-01-20 发布于北京
- 举报
第十二讲C语言动态数组实现
1:动态,数组
动态指的是的容量可以动态的变化,普通的数组,它的
容量是不能动态变换。随着我们的数据的增多,我们动态的
变化而变化,如果我们没有办法这么多数据了,那么就动态
的增加。
数组:特点,就是这些元素是一次按照顺序统一排列,我
只需要一个下标就可以马问的到元素。例如inta[100],从
低到高顺序排列的的时候a[3];
缺点?
1:加入我要在中间(删除)移动其它的元素;
2:一旦类型定义好了以后,就不能变了;
2:分析它的需求
1:动态数组,要能任何类型的元素(使用的时候决定你存
储的是哪一种)
2:动态的扩大,10个数据,100个数据;
3:通过一个下标,能里面的每一个元素
4:增加一个元素,删除一个元素;
5:将所有的元素都清空,但是不释放内存。
6:将所有的元素都清空,同时释放内存;
7:支持数据最后;
8:支持弹出最后一个数据;
9:支持将数据最前面。
10:支持弹出最前面的一个数据;
11:支持返回动态数组的元素个数;
3:动态数组的内存在某一个时刻也是固定的,当随着我们的元素
不断的增加的时候,如果我们现在的内存,没有办法存放这些元
素,那么我们就从新分配内存,将原来的内存数据,拷贝到新的
内存数据这里;
4:step1预先分配一段内存malloc,例如是8个元素的内存。
Step2每次往里面添加的时候,可用元素的个数越来越
少。
Step3:如果当我这个8个元素都存满了以后,又扩容
一部分(8个元素,可以存放16个元素),那么就借助我们的
realloc函数;
Step4:当我们又存放满了的时候,我们又扩充8个元素,24
个元素依次类推;
5:为什么是unsignedchar*,因为我们里面存放的是任何类型
都可以存放,所以,我们是通过一个地址+元素的带下内存表
示一个元素的,sizoef_elem,当我们要跳到下一个元素完美怎
么办,data_ptr+sizeof_elem跳动到下一个的地址。
6:动态数组它不管里面存放的元素,它,哪个元素
从那个地址开始存放的,然后占的内存字节就可以了;
#includestdio.h
#includestdlib.h
#includestring.h
#includet_vector.h
//#includevector_array.h
structpoint{
floatx;//4个字节
floaty;//4个字节,8个字节
};
intmain(intargc,char**
argv){structvectorv;
vector_define(v,sizeof(structpoint));
structpointpt;
pt.x=10;
pt.y=10;
//就是将pt里面的数据,存放到我们的动态数组里面;
vector_push_back(v,pt);
intsize=vector_size(v);
printf(size=%d\n,size);
for(inti=0;isize;i++){
structpoint*p=(structpoint*)vector_at(v,i);
printf(%f,%f\n,p-x,p-y);
}
structpoint*ptr=vect
您可能关注的文档
- 顺德至青岛物流专线服务方案与发展.pdf
- Fiskerton20X8年财务状况及Halam房产评估争议.pdf
- BCDN代币正式上线BigONE交易平台.pdf
- 二年级语文丑小鸭集体备课导学案.pdf
- Kiss Collec绒感唇膏柔粉SPK501产品信息.pdf
- 第四单元综合素质检测:积累与运用.pdf
- 城镇土地使用税与契税相关例题.pdf
- 寓言两则:纪昌学射与扁鹊治病学习目标与方法.pdf
- 样品符合RoHS指令测试报告.pdf
- 学前儿童数学教育期末检测卷.pdf
- 2026届河南省郑州市高三上学期一模政治(解析版).docx
- 2026届河南省郑州市高三上学期第一次质量预测历史(原卷版).docx
- 2026届河北省名校联合体高三上学期一模政治(原卷版).docx
- 广东省茂名市信宜市2025-2026学年高二上学期11月期中考试政治(原卷版).docx
- 2026年高一上学期语文期末考试压轴卷含答案.docx
- 河北省部分示范性高中2025-2026学年高一12月考试语文试题含答案.docx
- 考研真题 首都师范大学历史学院776历史学基础综合历年考研真题汇编(含部分答案).pdf
- 考研真题 首都师范大学文学院445汉语国际教育基础[专业硕士]历年考研真题汇编(含部分答案).pdf
- 《护士条例》 辅导讲座.pptx
- 牙科医师质控的年度工作述职.pptx
原创力文档

文档评论(0)