• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            摘要:在C/C++學習過程中,尤其是C學習到中階之后,可能會由遇到把指針轉換為整數或把整數轉換指針的過程,第一次接觸的人可能會有疑問,本文的目的就是解決這個疑問。

            問題

            在C/C++代碼遇到下面這些表達式:

            //把一個整數賦值給一個指針
            char* p_0=0;
            int* p_1=(int*)569;

            //把一個指針賦值給整數
            unsigned int n_0=(unsigned int)p_1;
            unsigned int n_1=(unsigned int)p_0;
            我們的問題是,為什么這些是正確的,甚至有時不很常見的。

            答案

            要回答這個問題,我們需要回到二進制以及位模式的解釋,或者內存地址定位方法上。我們先從內存地址定位方法上開始。

            現在的系統是很復雜的軟件系統和硬件系統的組合,我們的應用程序運行在操作系統之上,操作系統為應該程序提供了一層透明的內存訪問和使用機制:內存就是一個很大的字節數組,它通過數組的下標索引來定位。這里所講的機制,實際上就是虛擬內存技術,廣泛地存在于現在的操作系統之中。

            明白內存就是一個大數組之后,那么就不難理解指針與整數的互換了,因為一個指針變量的值就是一個地址,那么這個地址實際上就是內存那個大數組的下標,下標是什么?下標就是整數,如此指針與整數之間的轉換是正常的,并且在更底層的代碼中,我們會見到指針與整數就是一個東西,但在C/C++這樣認為就不合適了。

            讓我們來考慮二進制,這里說到一些比較接近機器的概念,不明白可以跳過。二進制就是0或1的串,好比“001101”這樣的。一個整數可能由一個“01101”組成,這里它是25;那么一個指針也可能由一個“01101”組成,此時它代表什么呢?此時它代表內存中被編號為25的那個字節。這樣的看到了,同樣一個二進制串被用于表達不同的意義,這就是計算的偉大之處,它把相同的位模式放于不同的環境之中,對其進行不同解釋,從而產生千差萬別的意義。有一句話是這樣說的:信息=位+上下文,想要表達的意思就是這個。

            總結一下,整數與指針可以相互轉換的原因是:內存是一個大數組,此外更深刻的原因是,對于人來說一個整數,一個是指針,但對于機器來說,它們都是二進制位。

            色噜噜狠狠先锋影音久久| 久久久久久久久久久久中文字幕 | 久久精品国产亚洲AV无码娇色| 日本三级久久网| 热综合一本伊人久久精品| 久久人人爽人人爽人人片AV麻烦| 色综合久久久久综合体桃花网| 韩国三级中文字幕hd久久精品 | 97久久精品人妻人人搡人人玩| 久久久久国产一区二区三区| 久久久久久国产精品无码超碰| 97久久精品人人澡人人爽| 亚洲AV无码久久精品成人| 久久免费视频观看| 日韩精品久久久久久久电影| 国产精品青草久久久久福利99 | 久久久精品日本一区二区三区| 久久频这里精品99香蕉久| 亚洲国产精品无码久久一线| 国产高潮国产高潮久久久91| 久久亚洲AV成人出白浆无码国产| 久久精品国产亚洲av水果派| 久久亚洲国产精品五月天婷| 久久综合给合久久狠狠狠97色| 亚洲中文字幕伊人久久无码 | 人人狠狠综合久久88成人| 久久无码专区国产精品发布| 国产午夜精品久久久久免费视| 久久国产精品免费一区二区三区 | 久久热这里只有精品在线观看| 99久久人妻无码精品系列蜜桃 | 免费一级欧美大片久久网| 亚洲国产成人乱码精品女人久久久不卡 | 久久久久久夜精品精品免费啦 | 无码国内精品久久综合88| 亚洲中文字幕无码久久2017| 国产精品成人久久久久久久| 国产成人久久精品激情| 国产精品99久久久精品无码| 国产AⅤ精品一区二区三区久久 | 色偷偷久久一区二区三区|