1、void
void 的字面意思是“空類型”, void *則爲“空類型指針”, void *可以指向任何類型的數據。
- 如果函數沒有返回值,那麼應聲明爲 void 類型。
- 如果函數無參數,那麼應聲明其參數爲 void
- 千萬小心又小心使用 void 指針類型
任何類型的指針都可以直接賦值給void *,但void *不可以無需強制類型轉換地賦給其它類型的指針。
按照 ANSI(American National Standards Institute)標準,不能對 void 指針進行算法操作。GNU(GNU’s Not Unix 的遞歸縮寫)則不這麼認定,它指定 void *的算法操作與 char *一致,在實際的程序設計中,爲符合 ANSI 標準,並提高程序的可移植性,我們可以這樣編寫
實現同樣功能的代碼:
void * pvoid;
(char *)pvoid++; //ANSI:正確; GNU:正確 - 如果函數的參數可以是任意類型指針,那麼應聲明其參數爲 void *
- void 不能代表一個真實的變量
因爲定義變量時必須分配內存空間,定義 void 類型變量,編譯器到底分配多大的內存呢