void 意為「無類型」,void * 為「無類型指針」,可指向任意類型數據。void 几乎只有「註釋」和「限制程序」的作用——沒人會定義 void a;(編譯報錯 illegal use of type 'void',即便不報錯也無實際意義)。
void func() 表示無返回值。void func(void) 表示不接受任何參數。void *p1; int *p2; p1 = p2; // 合法void *p1; int *p2; p2 = p1; // 錯誤,需 p2 = (int *)p1;道理:「無類型」可包容「有類型」,但「有類型」不能包容「無類型」。如「男人和女人都是人」成立,但「人是男人」不成立。
memcpy、memset 等參數用 void *)。掌握 void 與 void * 的轉換規則,是編寫健壯 C/C++ 代碼的基礎。