乙個指標在32位作業系統上,佔4個位元組。乙個指標在64位作業系統上,佔8個位元組。
指標存放的是單個物件的位址,所以其占用位元組大小跟語言無關,而是跟定址能力有關。
在計算機中,cpu是通過資料匯流排、位址匯流排、控制匯流排這三條匯流排和記憶體進行資料傳輸與操作。假設我們想通過cpu在記憶體中尋找乙個數字x,首先cpu要通過位址匯流排,在記憶體中找到x的位址,通過控制匯流排知道該操作是讀還是寫,然後通過資料匯流排把數字傳輸到cpu中。
位址匯流排的寬度決定了cpu的定址能力。
資料匯流排的寬度決定了cpu單次資料傳輸的傳送量,也就是資料傳輸速度。
控制匯流排的寬度決定了cpu對其他控制項的控制能力以及控制方式。
我們平時所說的計算機是64位、32位、16位,指的是計算機cpu中通用暫存器一次性處理、傳輸、暫時儲存的資訊的最大長度,即cpu在單位時間內能處理的二進位制數的位數。
假如計算機是16位的,意思是cpu可以表示16位二進位制數(***x ***x ***x ***x),最小是0000 0000 0000 0000,也就是0,最大是1111 1111 1111 1111,也就是 2^16-1,所以最多可以表示 2^16個(64k個)數字,即cpu最大可以給 2^16個單元唯一編號,所以16位cpu定址能力是64k,而指標存放的是單個物件的位址,占用了2個位元組,即8bit。
對指標占用位元組大小的理解
最近因為找工作,所以就複習了一遍c語言。就把自己對指標的一些理解說下吧。聽到指標,第一反應就是位址。再多看點書就可以知道指標佔的位元組是4。一般的面試題上面也會出這樣的題。樓主比較愛佔牛角尖,為什麼整形佔的是4個位元組,字元型佔的是1個位元組。而指標佔的位元組大小是4呢。如果換到51微控制器或者ms...
SinGuLaRiTy 位元組大小
char 1個位元組 char 即指標變數 2個位元組 short int 2個位元組 int 2個位元組 unsigned int 2個位元組 float 4個位元組 double 8個位元組 long 4個位元組 long long 8個位元組 unsigned long 4個位元組 char ...
C C 位元組對齊
什麼是對齊,以及為什麼要對齊 現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定變數的時候經常在特定的記憶體位址訪問,這就需要各型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。對齊的作用和原因 各...