一、void*来者何人?
在C语言中,*
即为指针类型,常用的有int *p
,char*q
,指针的内存大小与他们的类型有关,不同类型的指针有着不同的大小,如上述两个指针,sizeof(*p) = 4
,sizeof(*q) = 1
。
void *
为不确定类型指针,而当我们void *h
时,此时的sizeof(*h)
是没有大小的,即定义了void *
类型后,指针的内存大小未定。
二、void*将才何用?
你能设计一个接受不论什么类型的参数并返回interger (整数)结果的函数吗?
借这个问题来说如何使用
int fuc(void *ptr)
return (int) *ptr;
在输入指针类型参数时,不需要进行强制类型转换,void *
常用在函数参数
、函数返回值
中需要兼容不同指针类型的地方,我们可以将别的类型的指针无需强制类型转换的赋值给void *
,只需要在返回时强制类型转换为我们需要的指针类型,根据自己而定。