C 乙個指標佔幾個位元組?為什麼呢

2022-03-13 04:43:07 字數 853 閱讀 3282

乙個指標在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個位元組。

乙個指標佔幾個位元組?原理是什麼呢?

乙個指標佔幾個位元組的問題,感覺會c語言的同學都知道。但是在面試過程中,面了幾個同學,不是答忘記了,就是兩個 四個的瞎矇。那麼,乙個指標到底佔幾個位元組呢?其實,這個問題很簡單,稍微上網一搜,你就知道 乙個指標在32位的計算機上,佔4個位元組 乙個指標在64位的計算機上,佔8個位元組。這麼簡單的問題...

乙個指標變數佔幾個位元組

首先 假設p指向char型別變數 佔1個位元組 假設q指向int型別變數 佔4個位元組 假設r指向double型別變數 佔8個位元組 那麼p q r它們本身所佔的位元組數是否一樣?這裡還得學習乙個小知識 sizeof 資料型別 此運算子功能 返回值就是該資料型別所佔的位元組數。sizeof 變數名 ...

乙個指標變數佔幾個位元組問題

我們知道我們一般所了解的c及c 中,char佔1個位元組,int佔2個或者4個位元組,double佔8個位元組 舉個例子 includeint main void using namespace std int i 373 double j 4.5 char ch a int p i double ...