C 为什么空指针指向任何东西?

C 为什么空指针指向任何东西?,c,C,当某些内容被强制转换为void时,该值变为NULL。但是,为什么void*指向任何数据类型?空指针不应该是无用的吗 当某些内容被强制转换为空时,该值将变为空 不是真的。指向的数据不会发生任何变化 空指针不应该是无用的吗 空指针是C最接近“泛型类型”的东西,它非常有用,因为它允许一些泛型函数、一些泛型容器等。空指针是指向任何东西的指针。它是一个没有特定类型的泛型指针。它也可以有值NULL,在这种情况下,它不指向任何东西。 要使用空指针,必须跟踪它实际指向的对象,并且在使用它时,必须将其转换为适当的

当某些内容被强制转换为void时,该值变为
NULL
。但是,为什么
void*
指向任何数据类型?空指针不应该是无用的吗

当某些内容被强制转换为空时,该值将变为空

不是真的。指向的数据不会发生任何变化

空指针不应该是无用的吗


空指针是C最接近“泛型类型”的东西,它非常有用,因为它允许一些泛型函数、一些泛型容器等。空指针是指向任何东西的指针。它是一个没有特定类型的泛型指针。它也可以有值
NULL
,在这种情况下,它不指向任何东西。 要使用空指针,必须跟踪它实际指向的对象,并且在使用它时,必须将其转换为适当的类型


它们可能很危险,因为如果将其强制转换为错误的类型,将导致运行时出现未定义的行为。

void*
是一个通用对象指针。请注意,没有通用函数指针


您可以将任何对象指针值转换为
void*
并返回,而不会丢失值。

当某个对象被转换为void时,该值将变为NULL。需要证明/引用;-)
void
指针远非无用。与“类型化”指针不同,它让程序员合法地决定它指向什么。然而,这一点的合法性当然完全取决于程序员。强制转换不改变值,只是在该上下文中如何解释它们。。。例如,它可以调用变量值的指令将其更改为double,但不会更改原始值。@BlueMoon我猜
void
void*
之间存在混淆。它说,对
void
进行强制转换将抛出该值