[在线研讨会] C语言通用队列问题

[复制链接]
718|8
 楼主 | 2019-8-3 10:45 | 显示全部楼层 |阅读模式
最近想实现一个通用循环队列,可以存放char、int、float等数据,请问可以有什么办法实现吗?每次调用创建一个类型的如char型队列或者float型队列,现在碰到的主要是类型如何区分

使用特权

评论回复
| 2019-8-3 10:59 | 显示全部楼层
C语言简单队列.pdf (333.41 KB, 下载次数: 17)

使用特权

评论回复
| 2019-8-3 11:01 | 显示全部楼层
本帖最后由 zyj9490 于 2019-8-7 11:48 编辑

先创建最大需量的BUF,以CHAR标记,设一定数据类型,用指针来操作,地址的递增量即时数据类型。

使用特权

评论回复
| 2019-8-3 21:56 | 显示全部楼层
不用管char、int、float,同一用void*需要的时候转换类型即可。参考:
https://blog.csdn.net/qq_20553613/article/details/78902689

使用特权

评论回复

评论

叶春勇 2019-8-5 09:39 回复TA
正解。 
| 2019-8-3 22:11 | 显示全部楼层
举例:        union {
                u8  byte[4];
                u32 dword;
        } pt;

使用时,pt->dword = 0x12345678;
则:byte[0] = 0x78;
      byte[1] = 0x56;
      byte[2] = 0x34;
      byte[3] = 0x12;

使用特权

评论回复
| 2019-8-3 22:12 | 显示全部楼层
float 不好直接使用,要转换。

使用特权

评论回复
| 2019-8-5 09:32 | 显示全部楼层
楼主用的是什么编译器?至少对于 x86、amd64 和 arm 处理器架构的 GCC 来说,int 和 float 的长度是一样的。char 直接填 0 扩展成 int,float 直接按字节转换成 int,然后做一个 int 队列。

使用特权

评论回复
| 2019-8-5 11:07 | 显示全部楼层
先建一个结构体缓存队列,里面放不同类型的数据,然后用指针来存放数据

使用特权

评论回复
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表