我在我的操作系统书中遇到了这段代码:
void *foo()
{
// does something
pthread_exit(NULL);
}
是什么意思void *foo
?这是否意味着函数返回指向某种类型的指针void
?
我在我的操作系统书中遇到了这段代码:
void *foo()
{
// does something
pthread_exit(NULL);
}
是什么意思void *foo
?这是否意味着函数返回指向某种类型的指针void
?
不,这意味着该函数返回一个无类型类型的指针 - void*
。
这是一种“通用”指针类型。任何指向数据的指针都可以转换为void*
,并返回给调用者。但是,为了取消引用指针,您必须将其强制转换为非空指针类型(int*
、long*
、char*
等)。
void *
意味着它返回一个指向某种类型的指针,它没有指定哪个。为了使用,指针被强制转换为适当的类型,然后使用。事实上,这void *foo
只是一个间距问题。
看看这个解释