Vector二三事
在完结SA服务框架初始化之前,我们先来补补课,看看这个频繁出现在代码中的结构体,弄清楚它们能让我们阅读源码时更加得心应手,也能够体会到鸿蒙开发人员设计函数和结构体时的巧妙构思,开拓眼界
1. void类型是什么?
这里先穿插一个非常重要的知识点——有利于后面讲解的展开
void关键字我们都知道是指定没有没有可用的值。在前面的文章中提到了void在鸿蒙OS中的一个妙用——通过在函数体中void(parameter)使得那么没有传入实参的形参不会导致编译warning
在common.c和其他函数中我们经常看到这样的写法:

在Vector的结构体中data的类型:

所以这里总结一下void的常见用法:
- 函数返回为空——常见的用法,函数不返回任何值比如void main
- 函数参数列表为空——不需要传入任何参数比如void publish(void)
- void的用法——void指针作为左值表示可用接受任意类型的指针;void*指针作为右值赋给其他类型的指针时需要进行强制转换
也就是是说void类型的指针能够指向任意类型的指针,一般用于数据封装和通用设计,而Vector能够管理不同类型比如serviceImpl或者featureImpl就是因为使用了void类型指针的缘故
2. Vector
主要的相关文件在common.h和common.c中
2.1 Vector结构体
首先在common.h中可以看到其详细的结构体:
typedef struct SimpleVector{
int16 max;
int16 top;
int16 free;
void **data;
VECTOR_Key key;
VECTOR_Compare compare;
}
typedef void *(*VECTOR_Key)(

本文解析了Vector结构体,包括void类型的应用、结构详解、关键操作如Make、Clear、Add等,展示了如何利用Vector高效管理不同类型的serviceImpl和featureImpl。重点讨论了查找、比较和空间管理策略。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



