C語言進階--數據類型

1.數據類型

1.1 數據類型:

基本數據類型+複合類型
基本類型:char short int long float double
複合類型:數組 結構體 共用體 (C語言沒有類,C++有)

1.2 內存佔用

數據類型就好像一個一個模子,這個模子刻出來的就是C語言的變量。變量存儲在內存中,就需要佔一定內存。一個變量佔用的空間取決於變量類型。

char     1個字節
short    2個字節
int      4個字節
long     4個字節
float    4個字節
double   8個字節

每種數據類型在不同機器佔不同內存,上面講的是32位默認硬件來描述。

/*
熟悉sizeof使用
*/
#include 

int main(void)
{
    int len;

    len = sizeof(char);
    printf("sizeof(char) = %d. \n", sizeof(char));

    len = sizeof(short);
    printf("sizeof(short) = %d. \n", sizeof(short));

    len = sizeof(char);
    printf("sizeof(int) = %d. \n", sizeof(int));

    len = sizeof(long);
    printf("sizeof(long) = %d. \n", sizeof(long));
}

1.3 有無符號數

對於float和double這種浮點型數來說,只有有符號數,沒有無符號數。
別的基本類型數都有。
有無符號數,存儲方式不同。
譬如對於int來說:

unsigned int 無符號數,32位來存數是0 ~ 2^32-1
signed int 有符號數,最高位表示符號(1是負數,0是正數),31來存數是-2^312^31-1

對於float和double這種浮點類型的數,它的存儲方式是科學計數方式存儲。

//瞭解數據存取必須同類型
#include 
int main(void)
{
    int a ;
    a = 123;
    printf("a = %d, a = %f.\n", a, a);//a = 123, a = -0.032026

    return 0;
}

數據存取方式主要有兩種,一種是整形一種是浮點型,這倆各種存取方式完全不同。同一種類型只是範圍不同,存儲原理是相同的,方式上有差異,導致了能表示的範圍和精度不同。

1.4 空類型

C語言中的void類型,代表任意類型,而不是空的意思。任意類型是一種未知的,是沒有指定的。就是暫時沒有指定是一個什麼類型,就void。
一個函數形參列表void,表示不需要(不是不能)給它穿參。
返回值類型爲void,表示不會返回一個有意義的值,所以調用者不要想着使用該值。

#include 

void test(void);

int main()
{
    test();
    return 0;
}

void test(void)
{
    printf("I am a void test.\n");
}
void *       是void類型的指針。這是一個指針變量,該指針指向一個void類型的數。
void類型的數就是說這個數有可能是float,也有可能是結構體,哪種都有可能,只是我當前不知道。
#include 

int main()
{
    int a = 444;
    void *pVoid;
    pVoid = &a;
    printf("*pVoid = %d.\n", *(int *)pVoid);//先轉換成int *的方式,然後在取值。
    printf("*pVoid = %d.\n", *(float *)pVoid);//錯誤
}

void型的作用,程序不知道那個變量的類型,但是程序員自己心裏清楚。當時給這個變量賦值的是什麼類型,現在取得時候還是什麼類型。這些類型能不能兼容,完全有程序員自己負責,編譯器看到void就放棄檢查。

你可能感兴趣的:(C語言進階--數據類型)