【问题标题】:Why use void with a function?为什么将 void 与函数一起使用?
【发布时间】:2026-01-21 04:30:01
【问题描述】:

我了解 void 不返回任何值。 那么它是如何与函数结合使用的呢?

我的理解是,函数的目的是在用它做某事后返回一条信息。

那么我为什么要不返回任何价值,这将如何成为受益人?

【问题讨论】:

  • 因为你总是想要返回一个值。有时你这样做,其他时候,这将毫无用处。参考 Pascal 的过程和函数(过程不返回任何东西)
  • 返回 void 的 C/C++ 函数等价于其他编程语言中的“过程调用”。
  • 很遗憾没有。所谓的“功能”可以对参数做一些事情(由参考提供),有副作用(对系统和外围设备)。所以返回值并不是它唯一的目的。
  • "我的理解是,函数的目的是用它做某事后返回一条信息。"不必要。人们也出于模块化的目的创建函数。此外,您不必总是返回某些结果,如果它们是 out 参数,您也可以将结果存储在传递的参数之一中。
  • 我认为值得明确的是,约束每个函数返回一个值并且没有副作用是函数范式的定义,也就是 a范式等。

标签: c++ function return void


【解决方案1】:

我的理解是函数的目的是返回一个 用它做某事后的一条信息。

在某些(大多数)编程语言中,函数也有副作用。某些函数的用途仅限于副作用,不需要返回值。此类函数具有void 返回类型。

一些副作用的例子可能是:

  1. 更新全局
  2. 用户不想知道操作状态的文件操作、日志记录等
  3. 释放资源

【讨论】:

  • Every 函数在every 语言实现 一些副作用,至少加热处理器和/或丢失时间。重要的是有用的副作用。
  • 感谢@BasileStarynkevitch 添加另一个维度。完全同意你的看法。
【解决方案2】:

C++ 编程语言 Stroustrup 第 4 版书籍

声明函数时,必须指定返回值的类型。从逻辑上讲,您希望能够通过省略返回类型来指示函数没有返回值。但是,这会弄乱语法(§iso.A)。因此,void 被用作“伪返回类型”来指示函数不返回值。

编辑:

当您不期望调用函数返回某些内容时,我们使用void 函数。

If void() does not return a value, why do we use it?

【讨论】:

  • 问题不是“为什么我们在函数不返回值时精确void?”,而是“为什么我们希望函数不返回值?”。
  • the purpose of a function is to return a piece of information - 我不太同意这种说法。这与pass by reference 的概念相矛盾。
  • 这不是我评论的重点。此外,这点在问题的cmets中讨论过,另一个答案解决了这个问题。