void即“无类型”,void *则为“无类型指针”。
规则一 如果函数没有返回值,那么应声明为void类型。
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。
规则二 如果函数无参数,那么应声明其参数为void。
在C语言中,可以给无参数的函数传送任意类型的参数。在C++中,不能向无参数的函数传送任何参数,否则编译会出错。
规则三 小心使用void*类型。
按照ANSI(American National Standards Institute)标准,不能对void指针进行算术操作,但GNU把void*当做char*处理。
规则四 void不能代表一个真实的变量。
如void a;//报错
规则五 void*表示“任意类型指针”。
void指针可以直接指向任意数据结构,但给其他指针赋值,使其指向void*所指时,需要先给void*强制类型转换,如 int* ip = (void*)vp;
如果函数的参数可以是任意类型指针,那么应声明其参数为void *。