Info系统 中 数据结构的一点总结
来源:互联网 发布:php磁力解析源码 编辑:程序博客网 时间:2024/04/23 19:55
1 配置数据时,sex采用了枚举类型进行定义
typedef enum tagINFO_SEX{ INFO_SEX_FEMALE = 1, INFO_SEX_MALE = 2}INFO_SEX_E;typedef struct tagINFO_CFG{ unsigned int uiId; unsigned int uiAge; INFO_SEX_E enSex; char szName[INFO_NAME_MAXLEN+1];}INFO_CFG_S;
2 定义链表节点时,注意重定义后的结构名不要使用在本结构体中,不然我们会遇到很大的麻烦,我们来看下面的一个例子
#include<stdio.h>#include<stdlib.h>typedef struct tagData{ unsigned int uiId; unsigned int uiAge;}DATA_S;typedef struct tagInfo_Cfg{ struct INFO_CFG_S *pstNext; DATA_S stData;}INFO_CFG_S;int main(){ INFO_CFG_S *pst1 = (INFO_CFG_S *)malloc(sizeof(INFO_CFG_S)); INFO_CFG_S *pst2 = (INFO_CFG_S *)malloc(sizeof(INFO_CFG_S)); INFO_CFG_S *pst3 = (INFO_CFG_S *)malloc(sizeof(INFO_CFG_S)); //在这里为了说明,我不做pst返回值判断了 pst1->pstNext = pst2; pst2->pstNext = pst3; pst3->pstNext = NULL; pst1->pstNext->stData.uiId =1; return 0; }会报如下警告和错误,指针类型不完整!
在这里,我们可以使用强制转换来解决
((INFO_CFG_S *)(pst1->pstNext)->stData).uiId =1;但这个并不能彻底解决问题,因为在pclint时发出的一种警告是无法消除的
解决方案为
typedef struct tagInfo_Cfg{ struct tagInfo_Cfg *pstNext; //这一行发生了变化 DATA_S stData;}INFO_CFG_S;
3 定义宏时,时刻谨记加括号!
4 定义枚举类型时候的一种 技巧
#include<stdio.h>typedef enum tagInfo_Menu{ INFO_MENU_UNSPEC, //用来判断合法性 INFO_MENU_ADD, INFO_MENU_DELETE, INFO_MENU_MAX //用来判断合法性}INFO_MENU_E;#define INFO_MENU_ISVALID(enNum) ((INFO_MENU_UNSPEC<(enNum))&&((enNum)<INFO_MENU_MAX))int main(){ INFO_MENU_E enN1 = 0; INFO_MENU_E enN2 = 1; INFO_MENU_E enN3 = 2; INFO_MENU_E enN4 = 4; INFO_MENU_E enN5 = 5; printf("enN1 = %d,enN2 = %d,enN3 = %d,enN4 = %d,enN5 = %d\r\n", INFO_MENU_ISVALID(enN1),INFO_MENU_ISVALID(enN2), INFO_MENU_ISVALID(enN3),INFO_MENU_ISVALID(enN4), INFO_MENU_ISVALID(enN5)); return 0;}
输出为
enN1 = 0,enN2 = 1,enN3 = 1,enN4 = 0,enN5 = 0
5 数组赋值
#include<stdio.h>#include<stdlib.h>int main(){ int a[] = {[1]=3,[2]=4,[5]=8}; int i; printf("arr size = %d\n",sizeof(a)); for(i=0;i<sizeof(a)/sizeof(int);i++) { printf("a[%d]=%-3d",i,a[i]); } printf("\n"); return 0;}
输出结果如下
arr size = 24
a[0]=0 a[1]=3 a[2]=4 a[3]=0 a[4]=0 a[5]=8
这种用法常见于和枚举类型混合使用,在解析命令时用到的比较多
- Info系统 中 数据结构的一点总结
- 关于Info.plist中你不得不知道的一点
- 数据结构-哈希表的一点小总结
- [Linux 系统编程] container_of 的一点总结
- [系统编程] epoll的一点总结
- 关于android中几个Info系列类的总结
- 关于android中几个Info系列类的总结
- Logger.info中info()方法的使用
- Staff Info小系统开发总结
- Android Info类的总结
- Android Info类的总结
- Android Info类的总结
- Android Info类的总结
- ios(学习)info.plist与application一点小的总结(application设置网络状态以及提示消息数等)
- 关于单元测试中STUB的一点总结
- profile中password limit的一点总结
- 关于android中gridview的一点总结
- hadoop 框架中知识的一点总结
- 原来NSArray装的也是强类型元素,一直以为是弱类型.
- 树状数组合集
- 匿名内部类抽象实现枚举
- wikioi p1219 骑士游历
- wikioi p1220 数字三角形
- Info系统 中 数据结构的一点总结
- 彻底搞定C指针---指向指针的指针(转)
- IOS 多线程 RUNLOOP 机制 (一)
- 思科认证的新LOGO
- 不相交集类以及应用迷宫生成
- IOS 多线程 RUNLOOP 机制 (二)
- JCreator 4.00.028的注册码
- 倒着读《西游记》
- oracle 得到连续不重复的数字序列