为什么尝试遵循 void 指针不起作用?

saj*_*ghi 3 c pointers

int main()
{
    int b = 12;
    void *ptr = &b;
    printf("%d", *ptr);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我预计这段代码会打印 12,但事实并非如此。如果我们定义 int 指针而不是 void 指针,它就可以工作。我想知道如何使用 void 指针并打印分配给它的地址以及其中保存的数量?

dbu*_*ush 6

取消引用 avoid *没有意义,因为它无法知道它指向的内存类型。

您需要将其转换为指向 a 的指针int *,然后取消引用它。

printf("%d", *((int *)ptr));
Run Code Online (Sandbox Code Playgroud)