【C++】一個指針占幾個字節?為什么呢?


一個指針在32位操作系統上,占4個字節

一個指針在64位操作系統上,占8個字節

但是,編譯器為了兼容32位操作系統和64位操作系統,所以指針都是4個字節長度

為什么呢?

在計算機中,CPU不能直接與硬盤進行數據交換,CPU只能直接跟內存進行數據交換,而CPU是通過數據總線,地址總線,控制總線這三條總線和內存進行數據傳輸與操作

假設我們想通過CPU在內存中尋找一個數字x,首先CPU要通過地址總線,在內存中找到x的地址,通過控制總線知道該操作是讀還是寫,然后通過數據總線把數字傳輸到CPU中

我們知道:

地址總線的寬度決定了CPU的尋址能力,

數據總線的寬度決定了CPU單次數據傳輸的傳送量,也就是數據傳輸速度

控制總線的寬度決定了CPU對其他控件的控制能力以及控制方式

我們平時所說的計算機是64位、32位、16位,指的是計算機CPU中通用寄存器一次性處理、傳輸、暫時存儲的信息的最大長度。即CPU在單位時間內(同一時間)能一次處理的二進制數的位數
假如,某計算機的地址總線是32位,那么其一次可以處理的信息是32條,每一條地址總線有0或1兩種可能,那么32根地址總線一共有232種可能,也就是其描述的地址空間為0x0000 0000 0000 0000 ~ 232-1。
我們一般需要32個0或1的組合就可以找到內存中所有的地址,而32個0或1的組合,就是32個位,也就是4個字節的大小,因此,我們只需要4個字節就可以找到所有的數據。所以,在32位的計算機中,指針占4個字節。同理,在64位的計算機中,指針占8個字節。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM