c++ - 如果 void() 不返回值,我们为什么要使用它?

标签 c++ types void

void f() 意味着 f 什么也不返回。如果 void 什么都不返回,那我们为什么要使用它呢? void的主要用途是什么?

最佳答案

当 C 被发明时,约定是,如果你没有指定返回类型,编译器会自动推断你想要返回一个 int(对于参数也是如此)。

但通常你编写的函数可以做一些事情并且不需要返回任何东西(例如,想想一个只在屏幕上打印一些东西的函数);出于这个原因,决定,要指定你根本不想返回任何东西,你必须使用 void 关键字作为“返回类型”。


请记住,void 还有其他用途;特别是:

  • 如果将其指定为函数的参数列表,则表示该函数不带参数;这在 C 中是必需的,因为没有参数的函数声明对编译器意味着参数列表只是未指定。在 C++ 中,这不再需要,因为空参数列表意味着该函数不允许使用任何参数;

  • void 在指针中也有重要作用; void *(及其变体)表示“指向未指定内容的指针”。如果您必须编写必须存储/传递指针而不实际使用它们的函数(仅在最后,要实际使用指针,需要转换为适当的类型),这将非常有用。

  • 另外,(void) 的强制转换通常用于将值标记为故意未使用,从而抑制编译器警告。

    int somefunction(int a, int b, int c)
    {
        (void)c; // c is reserved for future usage, kill the "unused parameter" warning
        return a+b;
    }
    

关于c++ - 如果 void() 不返回值,我们为什么要使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11560068/

相关文章:

c++ - 容器的无序迭代

java - 在 JDK6 而不是 7 下编译的相互自引用类型参数?

c++ - std::set::insert,我能暗示多糟糕?

c++ - 如何使用 cppunit 断言宏来检查返回数据类型的预处理器值?

c - 获取 C 符号的类型信息

types - 映射类型的实体大小

c++ - 避免重复 SFINAE 区分无效和非无效返回类型

c - 仅使用 void 指针探索内存

c - 在 C 中获取 typedef 的名称?

c++ - pthread_kill 中的信号(pthread_t 线程,int sig)