指針變量占用多少字節


指針變量占用多少字節
 
我們講過,指針變量根據“基類型”的不同,有 int * 型,float * 型,double * 型,char * 型等。
 
但是我們前面在講數據類型的時候講過,int 型變量占用 4 字節,float型變量占用 4 字節,double類
型變量占用 8字節,char類型占用 1 字節。
那么“指針變量”占多少字節呢?是不是基類型占用多少字節,該變量就占用多少字節呢?同樣,用
sizeof寫一個程序看一下就知道了。
 
#include<stdio.h>
int main(void)
{
    int *a = NULL;
    float *b = NULL;
    double *c = NULL;
    char *d = NULL;
    printf("%d %d %d %d\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d));
    return 0;
}
運行結果為8  8  8  8
 
可見,不管什么樣的基類型,系統指針給指針變量分配的內存空間都是8字節,在C語言中,指針變量的“基類型”僅用來指定該指針變量可以指向的變量類型,並沒有其他意思。不管基類型是什么類型的指針變量,他仍然是指針變量,所以仍然占用 8 字節。
 
 
那么為什么系統給指針變量分配的是 8 字節呢?兄弟都9102年了,還在使用32位系統?當然是64位系統啦,64位計算機有64根地址線,每根地址線要么是 0 要么是 1,只有兩種狀態。內存單元中的每個地址都是由着 64根地址線通過不同的狀態組合而成的,而 8 字節剛好 64 位,正好能存儲下所有內存單元的地址信息。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM