色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > C語言的博大精深之數組和結構體的賦值操作

          C語言的博大精深之數組和結構體的賦值操作

          作者: 時間:2016-11-30 來源:網絡 收藏
          第一話,先談談數組賦值吧。恩,在C語言中數組賦值和結構體賦值很簡單,就是使用=,memcpy操作嘛.
          但最近在看關于隊列調度的內核實現代碼時,發(fā)現如下奇怪的賦值語句。(具體程序見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. };
          上面這段賦值語句第一次見到??戳薔久后,我才明白這個賦值語句的含義,原來C語言還可以這樣賦值哦
          說明:上面這段賦值語句有兩個需要注意的地方。
          1,[RTM_GETLINK - RTM_BASE] = { .dumpit = rtnetlink_dump_ifinfo }, 這條說明C語言在數組賦值時,可以專門對第幾個元素進行賦值。此例中等于[2]={...},即對第二個元素賦值。
          2, { .dumpit = rtnetlink_dump_ifinfo },說明,在結構體賦值中,也可以對某個特定的結構體成員進行單獨的賦值。


          評論


          技術專區(qū)

          關閉