C语言typedef用法

来源:百度知道 编辑:UC知道 时间:2024/07/06 16:07:00
结构体声明如下:
typedef struct tagLearn03selectClassData{
U16 actorid;
U32 instanceID;
unsigned selectflags:8;
} Learn03selectClassData,*P_Learn03selectClassData;

每次函数调用结构体的数据时都要先做如下的声明:
Learn03selectClassData* Learn03selectMemPtr;
Learn03selectMemPtr=(Learn03selectClassData*) pmemptr;
能解释下为什么这样做吗?

typedef 是用结构体struct tagLearn03selectClassData类型
重新定义个类型Learn03selectClassData,然后就可以用Learn03selectClassData来声明变量了
其实Learn03selectClassData和struct tagLearn03selectClassData是一样

这样定义,就不需要每次写struct tagLearn03selectClassData了,程序显得更简洁

Learn03selectMemPtr=(Learn03selectClassData*) pmemptr;
这是强制类型转换,把指针pmemptr转成Learn03selectClassData类型的指针
避免编译错误

(Learn03selectClassData*) pmemptr
强制类型转换,如果你的pmemptr不是P_Learn03selectClassData类型,则可能出现问题
我想作者这么做的主要目的可能是为了让数据对齐