当前位置:  技术问答>linux和unix

对一个结构体取下标 是什么结果?

    来源: 互联网  发布时间:2016-10-30

    本文导语:  如下:     wh = (struct ieee80211_frame *) skb->data;     frm = (u_int8_t *)&wh[1]; wh是一个结构体指针啊 wh[1] 表示的是什么意思?  frm表示的是什么意思? 没看懂 --------------------------------------------------------------------- ...

如下:

    wh = (struct ieee80211_frame *) skb->data;
    frm = (u_int8_t *)&wh[1];


wh是一个结构体指针啊
wh[1] 表示的是什么意思? 
frm表示的是什么意思?
没看懂

---------------------------------------------------------------------
struct ieee80211_frame {
u_int8_t i_fc[2];
u_int8_t i_dur[2];
u_int8_t i_addr1[IEEE80211_ADDR_LEN];
u_int8_t i_addr2[IEEE80211_ADDR_LEN];
u_int8_t i_addr3[IEEE80211_ADDR_LEN];
u_int8_t i_seq[2];
/* possibly followed by addr4[IEEE80211_ADDR_LEN]; */
/* see below */
} __packed;
-----------------------------------------------------------------------

|
skb->data 里面存储的是以struct ieee80211_frame数据结构组成的数据块,假定有5块,那就是skb->data有 5 * sizeof(struct ieee80211_frame) 这么多的数据。
wh 是struct ieee80211_frame 的一个指针,
frm = (u_int8_t *)&wh[1];
是指 指向skb->data 里面第二个struct ieee80211_frame 的数据块。
skb->data 由下面组成
ieee80211_frame(0) + ieee80211_frame(1) + ieee80211_frame(2) + ieee80211_frame(3) + ieee80211_frame(4)
frm 指向ieee80211_frame(1)这个数据块

另外,建议你先把 C/C++ 学好再来学习 linux 内核的东西。

|

我重新分析一下!
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!!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • <<大话数据结构>>中冒泡排序算法改进
  • 请问:在用proc方式往数据库插入数据时,我能不能定义一个结构体,它与表的每一项对应,将结构体赋好值后,再只将这个结构体插入表中,这行不行啊?
  • 基于Key-Value的NOSQL数据库Redis的数据结构及常用相关命令介绍
  • 全局结构体变量和全局结构体指针变量
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 《arm体系结构结构与编程》书如何
  • 数据结构:图(有向图,无向图),在Python中的表示和实现代码示例
  • file结构和inode结构
  • mysql 命令大全及导入导出表结构或数据
  • 《莱昂氏UNIX源代码分析》中有一种结构体声明没有结构体名
  • 关于学籍管理系统B/S结构实现的结构问题
  • GCC 编译问题: 结构A中有个成员结构B??
  • 强人,linux下驱动相关数据结构和usb设备数据结构之间的功能分析
  • 谁能告诉我EJB的体系结构有哪些,这些体系结构的优缺点如何,万分感谢!
  • 协议的设计一般采用结构体进行数据打包,在协议设计的结构体中能不能使用指针 ?
  • struct __una_u16结构是什么结构.
  • GNU汇编fill填充一个数据结构使得另一个数据结构全部清零
  • 高手帮帮忙!vi中如何实现跳转到任意结构体或函数的声明处,包括系统库中声明的函数和数据结构?
  • jbuilder7里如何在project pane里显示出某个project的所有的类的结构图,就如显示source java files的结构图一样
  • 关于客户服务器结构与浏览器服务器结构编程的比较
  • 有一个win32的结构体,大伙看看能否转换成linux下的基本等价的结构体?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3