您的位置 首页 IC

C言语的博学多才之数组和结构体的赋值操作

第一话,先谈谈数组赋值吧。恩,在C语言中数组赋值和结构体赋值很简单,就是使用=,memcpy操作嘛但最近在看关于队列调度的内核实现代码时

榜首话,先谈谈数组赋值吧。恩,在C言语中数组赋值和结构体赋值很简单,便是运用=,memcpy操作嘛.

但最近在看关于行列调度的内核完成代码时,发现如下古怪的赋值句子。(详细程序见linux-2.6.8:net/core/Rtnetlink.c的539行)
  1. #defineRTM_MAX(RTM_BASE+47)
  2. #defineRTM_GETLINK(RTM_BASE+2)
  3. structrtnetlink_link
  4. {
  5. int(*doit)(structsk_buff*,structnlmsghdr*,void*attr);
  6. int(*dumpit)(structsk_buff*,structnetlink_callback*cb);
  7. };
  8. staticstructrtnetlink_link link_rtnetlink_table[RTM_MAX-RTM_BASE+1]=
  9. //RTM_MAX-RTM_BASE+1=48
  10. {
  11. [RTM_GETLINK-RTM_BASE]={.dumpit=rtnetlink_dump_ifinfo},
  12. [RTM_SETLINK-RTM_BASE]={.doit=do_setlink},
  13. [RTM_GETADDR-RTM_BASE]={.dumpit=rtnetlink_dump_all},
  14. [RTM_GETROUTE-RTM_BASE]={.dumpit=rtnetlink_dump_all},
  15. [RTM_NEWNEIGH-RTM_BASE]={.doit=neigh_add},
  16. [RTM_DELNEIGH-RTM_BASE]={.doit=neigh_delete},
  17. [RTM_GETNEIGH-RTM_BASE]={.dumpit=neigh_dump_info}
  18. };
上面这段赋值句子榜首次见到。看了N久后,我才理解这个赋值句子的意义,本来C言语还能够这样赋值哦
阐明:上面这段赋值句子有两个需求留意的当地。
1,[RTM_GETLINK – RTM_BASE] = { .dumpit = rtnetlink_dump_ifinfo }, 这条阐明C言语在数组赋值时,能够专门对第几个元素进行赋值。此例中等于[2]={…},即对第二个元素赋值。
2, { .dumpit = rtnetlink_dump_ifinfo },阐明,在结构体赋值中,也能够对某个特定的结构体成员进行独自的赋值。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/318773.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部