<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C語(yǔ)言的博大精深之?dāng)?shù)組和結(jié)構(gòu)體的賦值操作

          C語(yǔ)言的博大精深之?dāng)?shù)組和結(jié)構(gòu)體的賦值操作

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


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();