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

2021-09-14 06:16:03 字數 2239 閱讀 8762

乙個指標佔幾個位元組的問題,感覺會c語言的同學都知道。但是在面試過程中,面了幾個同學,不是答忘記了,就是兩個、四個的瞎矇。。。

那麼,乙個指標到底佔幾個位元組呢?

其實,這個問題很簡單,稍微上網一搜,你就知道:

乙個指標在32位的計算機上,佔4個位元組;

乙個指標在64位的計算機上,佔8個位元組。

這麼簡單的問題,為什麼面試官願意問呢?其實這個問題不是在考你的記憶能力,是在考察你的計算機基礎能力。就比如,在你答出來4個位元組的情況下,面試官會問一句:

為什麼呢?

首先,我們要明白,指標就是位址,位址就是指標。而位址是記憶體單元的編號。所以,乙個指標佔幾個位元組,等於是乙個位址的記憶體單元編號有多長。

我們都知道,在計算機中,cpu不能直接與硬碟進行資料交換,cpu只能直接跟記憶體進行資料交換。而cpu是通過資料匯流排、位址匯流排、控制匯流排三條線與記憶體進行資料傳輸與操作。

問:假如,我們想通過cpu在記憶體中讀取乙個數字3,那麼是怎樣乙個操作呢?

首先,cpu通過位址匯流排,在記憶體中找到數字3的位址;

然後,通過控制匯流排知道該操作是讀還是寫;

然後,通過資料匯流排,把數字3傳輸到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個位元組。

同時也可以看出,由於位址匯流排為32,那麼每次定址的空間為0x0000 0000 0000 0000 ~ 232-1,那麼cpu的最大記憶體為232byte=222kb=212mb=22gb=4gb。

而64位,最大記憶體是264byte。

舉個例子

記憶體位址就像一條路上的門牌號,用幾位表示需要看門牌數量。

門牌號從0號開始編排,到232-1號結束,一共就有232個門牌號。分別為二進位制的

000000000000000000000000000號

000000000000000000000000001號

000000000000000000000000010號

最後111111111111111111111111110號

111111111111111111111111111號

每個門牌的號碼是32位(二進位制),乙個位元組為8位,32位就是4位元組。

1位=1bit=1位元,表示乙個二進位制0或1

1位元組(byte) = 8位=8bit=8位元

資料儲存是以「位元組」(byte)為單位,資料傳輸大多是以「位」(bit,又名「位元」)為單位,乙個位就代表乙個0或1(即二進位制),每8個位(bit,簡寫為b)組成乙個位元組(byte,簡寫為b),是最小一級的資訊單位。

1個英文本母(不分大小寫)佔乙個位元組的空間

計算機能夠處理的最小單元是 位元組 而不是 位

位,是由軟體通過位運算子操作的

記憶體位址是記憶體單元的編號

指標就是位址,位址就是指標;

指標變數就是存放位址的變數,也可以說,指標變數就是存放指標的變數

例如:int *p中p就是指標變數。

需要注意:通常我們敘述時,會把指標變數簡稱為指標,實際上它們的含義並不一樣

發現有些同學對位址、指標、指標變數還是分不太清,建議把郝斌老師的c語言有關指標的內容看一下,強烈安利

沒時間看的,可以把p123到p126這四節課看一下

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

乙個指標在32位作業系統上,佔4個位元組 乙個指標在64位作業系統上,佔8個位元組 但是,編譯器為了相容32位作業系統和64位作業系統,所以指標都是4個位元組長度 為什麼呢?在計算機中,cpu不能直接與硬碟進行資料交換,cpu只能直接跟記憶體進行資料交換,而cpu是通過資料匯流排,位址匯流排,控制匯...

指標佔幾個位元組,其中的原理是什麼?

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

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

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