指標的大小與硬體有關。
記憶體中有各種各樣的資料,整型、浮點型、字元型等等。這些資料在記憶體中佔據不同大小的儲存空間,用sizeof運算子(注:sizeof是種運算子而不是函式,它在編譯時發揮作用)進行運算時結果是不同的。然而不同型別的指標在相同系統環境下進行這種運算時結果卻是相同的。
眾所周知,c語言中的指標描述的是記憶體中的位址。而記憶體位址這種東西則是由cpu進行編址的。對於乙個4位的cpu來講,它能同時輸出的資料為4位,即0000-1111共2^4 種情況,故這些二進位制數字只能對應到16個位置的記憶體位址,即cpu僅能識別出16個記憶體位址。即便你的記憶體再大,它也顯示只有16個位置的記憶體可用。這種原理同樣應用於32位和64位的cpu。
32位的cpu能同時呈現32個位的資料,故有2^32 種情況,對應到2^32 個記憶體位置也就是最大3.85gb大小,因此32位的系統只能支援最大4gb的記憶體。相比之下,64位的cpu能同時吞吐2^64 位的資料,這顯然能夠對應到2^64 個記憶體的位址,而理論上這個大小換算成10進製則是相當大的數,如果對應到記憶體,此時乙個很大的記憶體。所以我們說64位系統理論支援無窮大記憶體(這裡的無窮大只是一種概念,因為我們不可能用到如此巨大容量的記憶體)。
綜上,因為指標存放的是位址,所以32位記憶體,共4個位元組;64位系統的64位位址共8個位元組——你應該明白什麼了吧!沒錯,32位指標4位元組,64位指標8位元組。
當然,cpu只是影響指標大小的首要因素,除了它之外還要看作業系統和編譯器的位數。這裡指標的大小由這三個東西中位數最小的那項決定。比如,如果cpu、系統都是64位的,但編譯器是32位的,那麼很顯然指標只能是32位4位元組大小。
指標的大小與硬體有關。
記憶體中有各種各樣的資料,整型、浮點型、字元型等等。這些資料在記憶體中佔據不同大小的儲存空間,用sizeof運算子(注:sizeof是種運算子而不是函式,它在編譯時發揮作用)進行運算時結果是不同的。然而不同型別的指標在相同系統環境下進行這種運算時結果卻是相同的。
眾所周知,c語言中的指標描述的是記憶體中的位址。而記憶體位址這種東西則是由cpu進行編址的。對於乙個4位的cpu來講,它能同時輸出的資料為4位,即0000-1111共2^4 種情況,故這些二進位制數字只能對應到16個位置的記憶體位址,即cpu僅能識別出16個記憶體位址。即便你的記憶體再大,它也顯示只有16個位置的記憶體可用。這種原理同樣應用於32位和64位的cpu。
32位的cpu能同時呈現32個位的資料,故有2^32 種情況,對應到2^32 個記憶體位置也就是最大3.85gb大小,因此32位的系統只能支援最大4gb的記憶體。相比之下,64位的cpu能同時吞吐2^64 位的資料,這顯然能夠對應到2^64 個記憶體的位址,而理論上這個大小換算成10進製則是相當大的數,如果對應到記憶體,此時乙個很大的記憶體。所以我們說64位系統理論支援無窮大記憶體(這裡的無窮大只是一種概念,因為我們不可能用到如此巨大容量的記憶體)。
綜上,因為指標存放的是位址,所以32位記憶體,共4個位元組;64位系統的64位位址共8個位元組——你應該明白什麼了吧!沒錯,32位指標4位元組,64位指標8位元組。
當然,cpu只是影響指標大小的首要因素,除了它之外還要看作業系統和編譯器的位數。這裡指標的大小由這三個東西中位數最小的那項決定。比如,如果cpu、系統都是64位的,但編譯器是32位的,那麼很顯然指標只能是32位4位元組大小。
為什麼使用指標
在實際程式設計中,既然使用變數就可以訪問資料,為什麼還用指標呢?使用指標來操縱自動變數的唯一原因是,為了說明指標的工作原理。指標真正的用途是被用於完成下列3種任務 管理自由儲存區中的資料 訪問類的成員資料和函式 按引用傳遞引數 在 函式的 工作原理 中,提到了5個記憶體區域 全域性命名空間 自由儲存...
指標大小由什麼決定
字長 在同一時間中處理二進位制數的位數叫字長 cpu處理能力 通常稱處理字長為8位資料的cpu叫8位cpu,32位cpu就是在同一時間內處理字長為32位的二進位制資料。二進位制的每乙個0或1是組成二進位制的最小單位,稱為乙個位元 bit 一般說來,計算機在同一時間內處理的一組二進位制數稱為乙個計算機...
1 為什麼要有指標?
0 史前 早期的cpu 也許並沒有真正的實現 並不如今天的強大,記憶體讀寫的指令可能只有 從 常數 0x1234位址處讀入1位元組到暫存器a 或者 把暫存器b的值寫入 常數 位址0x5678這個地方 那個時候沒有變數這一說,所有的記憶體讀寫都得指定好常數,也就是得把具體的數字 也稱為字面量,lite...