void*
void不能够定义变量,由于定义变量前提是要开辟空间,而void是空类型。void*能够定义变量,指针在32位平台占4个byte,可是void*定义的变量不能够解引用。
void用在函数定义当中能够表示函数没有返回值,或者没有形式参数,,而void*表示指针指向的数据的类型是未知的。void*表示一个有效的指针,他确实指向一个实实在在的数据,但是数据的类型还没有肯定,在后续的使用过程通常要强制类型转化。
例:
动态内存分配函数malloc(),原型定义以下:
void *malloc( size_t size );
malloc()的返回值为void*类型,因此在使用的时候要强制类型转化为须要的类型
char *arr = (char *)malloc(sizeof(char)*20);//开辟能够保存20个字符的内存大小,返回值转化为char*