为什么void*在C中有效?
为什么我们可以将变量标记为“void*x”而不是“void x”? 为什么“void*x”有用 例如:为什么void*在C中有效?,c,void,void-pointers,C,Void,Void Pointers,为什么我们可以将变量标记为“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 ge
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.
我认为这是因为void通常被用作函数的返回类型,以指示没有返回值 Void*实际上非常有用!Void*用作malloc()和calloc()等内存函数的返回类型,因为它允许它们操作任何数据类型。此外,void*可用于创建泛型函数。一个经常被引用的例子是:
void qsort(void*base,size\t num,size\t size,int(*比较器)(const void*,const void*))
这是一个实现快速排序的通用函数。本例中的比较函数使用void*指针来表示它可以比较任何数据类型 这必须在C++中有效:避免*p;