乙個指標佔幾個位元組的問題,感覺會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 變數名 ...