【问题标题】:What can a void variable be used for?void 变量可以用来做什么?
【发布时间】:2013-09-13 04:13:22
【问题描述】:

例如,如果我创建了变量:

void helloWorld;

我能用它做什么?因为它代表什么,一开始我以为用它什么也做不了。 我知道函数使用 void 来表示没有返回值,但变量是否有目的?

-- 编辑--

我已经找到答案了。我现在知道 void 变量在 Java、C++ 和 C 等编程语言中是非法的。感谢您的所有回答!

【问题讨论】:

  • 这将导致java 中的编译错误。除非你的意思是Void
  • 严格地讲 Java,void 是一个不能用于变量的关键字。尽管如此,Void 是支持 void 关键字的不可实例化对象,并且由于它是一个对象,它实际上可以用作一种类型。
  • 我很确定您不能在您询问的三种语言中的任何一种中定义 void 变量;这让这个问题变得毫无意义。
  • 你说得对,这就是你不能这样做的原因。
  • void * 主要用作函数原型中的参数,其中该参数旨在接受指向任何其他类型变量的指针。

标签: java c++ c variables void


【解决方案1】:

在 C 中,您可以将函数参数转换为 void

(void)myarg;

这仅对处理未使用的参数警告有用。

【讨论】:

    【解决方案2】:

    C99 6.2.6 第 19 段说:

    void 类型包含一组空值;这是一个不完整的 无法完成的类型。

    另外,C 中的void 是一种没有大小的类型。因此,如果您要声明一个 void 类型的变量,编译器将不知道要为其分配多少内存。
    所以,you can't declare a void variable 因为它的类型不完整。

    void 在我们讨论指针时很有用(void*),因为它允许您在不指定类型的情况下声明通用指针。

    阅读Keith Thompson给出的answer以获得更详细的解释。

    【讨论】:

    • 那么在 C 中声明一个void helloWorld 变量是可能(但没用)吗?参考您显然使用的标准文档会很好。
    • 那个答案没有声明一个 void 变量:它计算一个非 void 变量表达式并将其转换为 void。我只是试图让gcc 接受变量声明void helloWorld(而不是表达式(void) helloWorld,其中helloWorld 被声明为非void),但失败了。
    • @MarnixKlooster;我在tutorial 中读到了这个。
    • @MarnixKlooster 这是无效的,因为 1) void 是不完整的类型 (C99 6.2.5§19) 和 2) 没有链接声明的标识符必须具有完整的类型 (C99 6.7§7)。另一方面,你可以有一个(完全没用的)声明,比如extern void x;
    • @Virgile: extern void x; 确实有潜在的(非便携式)用途:&x 可用于获取内联汇编或外部 asm 文件中的 asm 标签地址。这反过来对于从信号处理程序确定保存的程序计数器是否在两个特定的 asm 标签之间很有用。
    【解决方案3】:

    我想你不知道什么是“空”???你呢。。

    关于 void 的小而快的信息

    void 不是用于声明变量的 int 或 char 等数据类型。

    void 是返回类型

    void 返回类型用于表示我们没有从这个函数返回任何内容。

    如果您不返回任何内容,那么您必须将 void 写为函数(包括主函数)的返回类型。或者你可以说....

    return 0;
    

    在函数定义的末尾。

    我希望这可以帮助您了解什么是无效的。

    【讨论】:

    • 这对于任何编程语言(c、c++、java、c#、vb.net、js、motif、脚本语言、pascal、cobal)都是一样的......几乎无处不在
    • 我知道void类型是什么,我只是问它是否可以在变量中使用。我现在已经得到了答案,所以谢谢你的回答。我将在上面的帖子中宣布我已经得到了答案....
    【解决方案4】:

    在 Java 中,不能使用 void 作为变量类型。

    但是你可以使用Void

    Void 类是一个不可实例化的占位符类,用于保存 对表示 Java 关键字 void 的 Class 对象的引用。

    除了获取Class 对象之外,您将无法对其进行任何操作,但无论如何这是一个static 字段,因此您不需要对象引用。

    【讨论】:

      【解决方案5】:

      void 变量在 C/C++ 中无效,因为编译器无法确定它们的大小。 void 仅作为函数参数列表(不带参数)或返回类型(不返回任何内容)有效。

      void * 只是表示“任何类型的指针”,是一个通用的指针类型,但是你不能取消引用它。

      【讨论】:

      • 正式地说,它们无效的原因是void是一个不完整类型
      • @R..;是的,你是对的。这是因为类型不完整(C99 6.2.6 第 19 段)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 2013-03-18
      • 2018-06-16
      • 2011-07-12
      相关资源
      最近更新 更多