eanmos Asked:2020-10-06 16:29:53 +0000 UTC2020-10-06 16:29:53 +0000 UTC 2020-10-06 16:29:53 +0000 UTC 在这些函数中是否必须使用“return”和“void”? 772 示例: void foo(int number) { /* code */ return; } 是否必须return在每个功能的末尾使用? 示例 2: void bar(void) { /* code */ } 如果函数什么都不带,是否必须void在参数列表中使用bar? 有人说是,有人说不是。为了更好地理解编译器的代码,什么是正确的,在 C 中使用什么通常更正确? 这个问题来自 enSO的翻译。 c 2 个回答 Voted AlexGlebe 2020-10-06T18:22:06Z2020-10-06T18:22:06Z 关于在返回值为void的情况下该怎么做,标准规定不能返回;. A return statement with an expression shall not appear in a function whose return type is void. A return statement without an expression shall only appear in a function whose return type is void. 该函数有一个例外:int main()您不能这样做return(默认情况下返回零)。 定义函数时,必须始终指定返回类型,即使您什么都不返回(void)。 当你定义一个带空括号的函数时,并不是你不接受参数,而是你自己处理参数列表。并且编译器不会将它的鼻子插入错误的客户端参数和您的参数。 // f.h int f(); // f.c int f(int x, int y) { return x+y;} 因此,最好将参数列表指定为无效,以免产生误解。 Best Answer eanmos 2020-10-06T16:29:53Z2020-10-06T16:29:53Z 根据C语言标准: 列表中唯一一个未命名类型参数的特殊情况void表明该函数没有参数。 标识符列表仅定义函数参数的标识符。作为定义的一部分的函数声明中的空列表表示该函数没有参数。函数声明中不属于定义的空列表表示未提供有关参数数量和类型的信息。145) — C11 标准 6.7.6.3 函数声明(包括原型) 因此广告 void foo(void); 表示该函数没有参数。 广告 void foo(); 表示函数参数的数量和类型foo未知。 声明与定义同时进行 void foo() { ... } 表示该函数foo没有参数。 对于return函数中不返回任何操作的运算符 ( void),如果return是函数中的最后一个运算符,则通常省略。在这种情况下使用return只会使读者感到困惑,因为他必须确保缺少表达式 inreturn不是错字。 来自莫斯科的用户弗拉德的回答翻译。
关于在返回值为void的情况下该怎么做,标准规定不能返回;.
该函数有一个例外:
int main()您不能这样做return(默认情况下返回零)。定义函数时,必须始终指定返回类型,即使您什么都不返回(void)。
当你定义一个带空括号的函数时,并不是你不接受参数,而是你自己处理参数列表。并且编译器不会将它的鼻子插入错误的客户端参数和您的参数。
因此,最好将参数列表指定为无效,以免产生误解。
根据C语言标准:
因此广告
表示该函数没有参数。
广告
表示函数参数的数量和类型
foo未知。声明与定义同时进行
表示该函数
foo没有参数。对于
return函数中不返回任何操作的运算符 (void),如果return是函数中的最后一个运算符,则通常省略。在这种情况下使用return只会使读者感到困惑,因为他必须确保缺少表达式 inreturn不是错字。来自莫斯科的用户弗拉德的回答翻译。