登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] C语言学习----可变数组

[复制链接]
发表于 2023-1-29 20:42:24 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C语言
学习安排: 通过C语言的进一步学习,实现单片机操作程序的简化
开始时间: 2023-01-26
结束时间: 2023-01-31
C语言学习

可变数组



在我们写程序时,我们一般需要储存我们接收到的数据。使用数组去储存很方便。

当当我们程序写下构建后烧录到单片机上时,如果数据过多数组当前的大小无法储存更多的数据,

那此时我们就不得不更改代码,选用更大的数组去储存数据。

但当大小仍不够用时,就不得不重复上述的操作了。若我们能让存储数据的数组随数据增多而增大,

那么就可以解决上述的问题。

我们可以通过不断地利用malloc申请储存空间来实现可变数组的功能。



可变数组代码:

屏幕截图_20230129_201724.png

屏幕截图_20230129_201750.png

屏幕截图_20230129_201801.png

屏幕截图_20230129_201826.png

屏幕截图_20230129_201834.png

通过调用该模块化后的函数就可以实现可变数组的功能。

代码详解请参考注释。



注:我们是调用void array_inflate(Array* a, int more_size)这一部分的代码来实现增大储存空间

的。但因为执行程序的顺序,我们首先要将上次申请的储存空间内储存的数据转移到新

申请的空间内。所以每次申请新的储存空间前,我们不能free上次申请的储存空间,

这就意味着我们每次新malloc的空间都是接在在上次malloc的空间之后,这就导致我们浪费了大量的储存空间,没能使用。

而我们使用的单片机的存储空间只有几MB大小。所以我们要寻求新的办法。而这个办法就是下节要讲的链表。





相关知识笔记


QQ图片20230129204127.jpg
































好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表