C语言中怎么实现数组的缓存
最近需要用C语言对数组(基带信号)进行处理,由于算法原因需要各个子函数对接收到的数组进行缓存。比如在一次主循环中子函数Fun1输入长度为500的信号数组a1[500],和本地信号数组做运算后产生了一个新数组b输出,但原始数组a[500]的后面100个元素在下次循环中仍然需要使用(希望前400个元素被去掉),它要和下一次循环中输入Fun1的长度为500的数组拼接成一个新的数组a2[600]供处理用,结束后将a2[600]的后100个元素保留供下次循环使用,以此类推(上一次100+下一次500=600)......
现在想用calloc()函数动态分配缓存数组的大小,请问
1.怎么去掉a1[500]的前400个元素,即数组长度减为100,只保留后100个元素;
2.怎么实现剩余100个元素和新输入的500个元素拼接成a2[600]
关于问题1查资料有memset()函数,不过它只能把数组元素置为同一个值(比如为“0”),不能真正地去掉元素截断数组。关于问题2查资料有memcpy()函数,那么我该把缓存数组Cache1大小设为600吗?缓存数组Cache1它声明为全局数组or局部数组or局部静态数组,它是直接定义大小还是每次都动态分配呢?此外主函数主循环中对于子函数Fun2它的缓存大小Cache2(每次主循环要保留的元素个数)和Fun1不相同,Fun3与Fun1和Fun2都不同....等;在单个子函数(如Fun1)的子循环中运算时中间结果(数组)的长度需要不断缓存增加(类似于拼接),又该采用什么方式定义中间数组