【问题标题】:Why does a void pointer point to anything?为什么空指针指向任何东西?
【发布时间】:2019-09-16 00:22:03
【问题描述】:

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

【问题讨论】:

  • 当某些东西被强制转换为 void 时,该值变为 NULL。 需要证明/引用 ;-)
  • void 指针远非无用。与“类型化”指针不同,它让程序员合法地决定它指向什么。但是,其合法性当然完全取决于程序员。
  • 强制转换为不改变值,只是它们在该上下文中的解释方式......它可以调用变量值的指令以将其更改为双精度值,例如,但原始值将不可更改。
  • @BlueMoon 我猜这里voidvoid* 之间存在混淆。
  • stackoverflow.com/questions/689677/… 它说强制转换为 void 会将值抛出

标签: c


【解决方案1】:

空指针是指向任何东西的指针。它是一个没有特定类型的通用指针。它也可以有值NULL,在这种情况下它不指向任何东西。 要使用 void 指针,您必须跟踪它实际指向的内容以及何时使用它,必须将其转换为适当的类型。

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

【讨论】:

    【解决方案2】:

    当某些东西被强制转换为 void 时,该值变为 NULL。

    不正确。指向的数据没有任何反应。

    空指针不应该没用吗?

    void 指针是 C 中最接近“泛型类型”的东西,非常有用,因为它允许一些泛型函数、泛型容器等。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-11-11
        • 1970-01-01
        • 2015-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-04
        • 1970-01-01
        • 2011-05-19
        相关资源
        最近更新 更多