23,118
社区成员
发帖
与我相关
我的任务
分享
我重新分析一下!
wh = (struct ieee80211_frame *) skb->data;
frm = (u_int8_t *)&wh[1];
1、第一句中skb->data这句很简单,取skb结构体里面的data元素,毫无疑问,data应该是个数组,至于这个数组中元素的类型是什么?那就不得而知了!
2、将skb->data强制转换成指向struct ieee80211_frame结构体的指针,同时赋值给wh,wh类型也是指向该结构体的指针!
3、wh[1] = *(wh + 1); 其中的1,表示wh指向的元素的大小!亦即sizeof(struct ieee80211_frame);这么大!从上面可求出这个size!
4、frm的类型应该是u_int8_t类型的一个指针!此时的wh[1]是wh指向的第二个struct ieee80211_frame元素!&wh[1]就表示第二个元素的地址!接着将这个地址强制转换成指向u_int8_t类型的指针!
综上:wh可看成是一个一维数组!数组内存放的元素类型为struct ieee80211_frame!
wh[1]就是数组中的第二个元素!&wh[1]就是第二个元素的地址!
I think it's so clear!!