【问题标题】:Why void* valid in C? [duplicate]为什么 void* 在 C 中有效? [复制]
【发布时间】:2018-12-07 00:14:51
【问题描述】:

为什么我们可以将变量标记为“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.

【问题讨论】:

  • 这在 C++ 中必须有效:避免 *p;

标签: c void void-pointers


【解决方案1】:

我想是因为 void 一般用作函数的返回类型,表示没有返回值。

Void* 实际上非常有用! Void* 用作 malloc() 和 calloc() 等内存函数的返回类型,因为它允许它们操作任何数据类型。此外,void* 可用于创建通用函数。一个经常被引用的例子是: void qsort (void* base, size_t num, size_t size, int (*comparator)(const void*,const void*))

这是一个实现快速排序的通用函数。本例中的比较函数使用 void* 指针表明它可以比较任何数据类型。

【讨论】:

    猜你喜欢
    • 2018-01-19
    • 2014-02-20
    • 1970-01-01
    • 2018-05-05
    • 2018-07-11
    • 1970-01-01
    • 2019-04-26
    • 2019-02-07
    • 1970-01-01
    相关资源
    最近更新 更多