最近在公司没什么事做,突然有来写写日志和博客,这种突发的灵感来自于我在学习内核驱动代码的时候发现了结构体的一种古老的初始化方法,多亏了尚观广州校区的叶老师在群里用心的给我文字讲解,让我明白了原来结构体初始化也可以用:冒号这样的方法。
其实在C语言中,冒号:的用法有很多,比如三目运算符 表达式?表达式1:表达式2 ;
它的意思就是如果表达式成立,那么执行表达式1,否则执行表达式2 。还有一种就是广泛用于结构体的位段中,例如:
Struct node
{
Int id : 2 ;
double : 4 ;
};
大概意思就是id这个结构体成员只占int型4个字节中的2个字节,这种用法在封包的时候用得最多,比如TCP,UDP,ARP,IP,HTTP等等的协议