void:数据类型的对立面,即“无类型”,本身不是一种数据类型。
使用如下:
(1)如果函数没有返回值,那么应将其声明为 void 类型。
(2)如果函数无参数,那么声明函数参数为 void 。
=========================================================
void*:通用类型指针,可以指向任何类型的数据。
void *pVoid;
float *pFloat;
pVoid = pFloat; //正确,无需强制转型(任何类型的指针都可以直接赋值给void*[赋值给其它类型,需要强转])
pFloat=pVoid ; //错误
Note:在 C语言中,标准允许T*与void*之间的双向转换,间接导致了各种数据类型之间的隐式转换是允许的,无论是从低级到高级,还是从高级到低级,这样的转换带来了太多的不安全因素。在C++中,双向变成单向,在不使用强制类型转换的前提下,不允许将 void* 赋值给其他类型的指针。
注意:GNU中,指定 void* 的算法操作与char* 一致,但ANSI标准更通用,移植性更强。
void* memcpy(void* dest, const void *src, size_t len);
void* memset(void *buffer, int c, size_t num);