为什么我们可以将变量标为“ void * x”而不是“ void x”? 为什么“ void * x”有用?
示例:
int main()
{
void* a;
return 0;
}
上面的代码成功编译并运行
int main()
{
void a;
return 0;
}
上面的代码得到以下编译错误:
b.c:6:10: error: variable has incomplete type 'void'
void a;
^
1 error generated.
答案 0 :(得分:1)
我认为这是因为void通常用作函数的返回类型,以指示没有返回值。
无效*实际上非常有用! Void *用作malloc()和calloc()等内存函数的返回类型,因为它允许它们处理任何数据类型。此外,void *可用于创建通用函数。一个经常被引用的例子是:
void qsort (void* base, size_t num, size_t size, int (*comparator)(const void*,const void*))
这是实现快速排序的通用功能。在这种情况下,比较函数使用void *指针来建议它可以比较任何数据类型。