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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 指針,其實很危險

          指針,其實很危險

          作者: 時間:2016-11-21 來源:網(wǎng)絡 收藏
          我們知道,指針是指向一個地址的。而指針的類型則表明了指針指向內容的大小,即包含字節(jié)數(shù),這在對于指針的自增和自減中體現(xiàn)的很明確。

          比如下面一段代碼,我們分別定義了3個不同類型的指針,指向相同的地址,然后賦予不同的值。這樣一下我們就明了了。

          本文引用地址:http://www.ex-cimer.com/article/201611/319102.htm

          1. //解釋代碼
          2. char*p_char;
          3. short*p_short;
          4. long*p_long;
          5. p_char=(char*)0x1000;
          6. p_short=(short*)0x1000;
          7. p_long=(long*)0x1000;
          8. *p_char=0x12;
          9. *p_short=0x1234;
          10. *p_long=0x12345678;

          從以上的代碼我們即可看出,不同類型的指針,所能表示的數(shù)據(jù)大小不同。而且需要注意的是,對指針的賦值操作。C語言使用指針的限制是,所有對于指針的操作必須是同類型的指針才可以進行。像0x1000這樣只是一個數(shù)字而已,前面加上類型我們才能知道我們操作的向的內容是多少字節(jié)。這樣就可以把指針和地址區(qū)分開。而另外需要注意的是C語言為了提升效率對于指針作出了起始地址對齊的要求,比如short指針地址需要被2整除,而long指針地址則需要被4整除。指針的存在讓我們對內存的操作有了自由性,但自由的同時也增加了危險性。比如如果我們定義指針類型時類型不同,那么在自增或者自減時指針地址的偏移就會不同。比如char型的指針,執(zhí)行自增后指針地址加1,而short型和long型則分別是加2和加4.如果我們編寫程序中沒有考慮到這點,那么很容易導致錯誤。而且相互連續(xù)定義的數(shù)組地址不一定連續(xù)。這些都是不小心就會犯錯的地方。


          參考《刪繁就簡——單片機入門到精通》



          關鍵詞: 地址指

          評論


          技術專區(qū)

          關閉
          看屁屁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); })();