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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 指針,其實(shí)很危險(xiǎn)

          指針,其實(shí)很危險(xiǎn)

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

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

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


          參考《刪繁就簡(jiǎn)——單片機(jī)入門到精通》



          關(guān)鍵詞: 地址指

          評(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); })();