void *类型的函数返回的是什么东西?
来源:百度知道 编辑:UC知道 时间:2024/05/22 12:22:16
void表示无或空的意思,函数返回void *表示返回一个无类型的指针,该指针可以通过强制转换成任意类型的指针。
比如
void* pVoid = f();
int* pInt = (int*)pVoid;
一般申请内存的函数返回的都是void*类型,比如malloc。
void是返回空值么? 我记得应该是表示没有的意思吧?
规则一 如果函数没有返回值,那么应声明为void类型
规则二 如果函数无参数,那么应声明其参数为void
规则三 小心使用void指针类型
按照ANSI(American National Standards Institute)标准,不能对void指针进行算法操作,即下列操作都是不合法的:
void * pvoid;
void++; //ANSI:错误
void += 1; //ANSI:错误
//ANSI标准之所以这样认定,是因为它坚持:进行算法操作的指针必须是确定知道其指向数据类型大小的。
规则四 如果函数的参数可以是任意类型指针,那么应声明其参数为void *
规则五 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;
void *p;
就是一个可以指向们任意内存的指针。