2019独角兽企业重金招聘Python工程师标准>>>
对于有的函数,或许有时候我们会见到一个叫做void*的返回值或者有一个叫做void*的参数,但是很多人觉得这好像不太符合ansi标准吧,比如说下面的很多都是有问题的
void * pvoid;
void++; //ANSI:错误
void += 1; //ANSI:错误
其实不然,其中void*表示的则是一个不确定类型的指针,比如下面的这个例子中所介绍的:
void *// 也是一个指针,只是他的类型不确定
void *fun1(void *p)
{
//...
return p;
}
void *fun2()
{
char *p=malloc(...);
//...
return (void *)p;
}
首先,void不是表示空值,null才是空值;
其次,void* 表示任意类型指针,或者说未定义类型的指针。
比如我们定义
void *p;
int *i;
那么可以直接进行如下赋值:
p=(int*) i;