void* 指针:可以指向任意类型数据的指针
注:任意指针初始位置都是0xCCCCCCCC
空指针,void*表示“任意类型的指针”或表示“该指针与一地址值相关,但是不清楚在此地址上的对象的类型”。
void*指针只支持几种有限的操作:
①与另一个指针进行比较;
②向函数传递void指针或从函数返回void*指针;
③给另一个void*指针赋值。
eg.
int * pint;
void * pvoid;
pvoid = pint;//right
pint = pvoid;//wrong
pint = (int *)pvoid;//如果要讲void指针赋给其他类型的指针,需要加强制类型转换
由于void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值,因此还可以用void指针来作为函数形参,这样函数就可以接受任意数据类型的指针作为参数。
例如:
void * memcpy( void *dest, const void *src, size_t len );
void * memset( void * buffer, int c, size_t num );
不允许使用void*指针操作它所指向的对象。
例如,不允许对void*指针进行解引用。不允许对void*指针进行算术操作。