goto vs返回C编程中的子菜单和菜单

Jom*_*ejo 0 c goto

我有一个非常快速的问题.哪个更"标准"使用?转到还是返回一个函数?

转到示例:

main(){
   start:
   //some code
   goto start;
}

main(){
   //some code
   return main();
}
Run Code Online (Sandbox Code Playgroud)

两者都将循环脚本.但我想知道哪一个更适合使用.

goto似乎非常好,但使用它有什么缺点吗?(我只是想知道,因为一名教练因为goto功能Oo失败了,我想知道为什么,或者他做了什么是合理的.)

如果你问为什么要问这个,我正在尝试创建一个带子菜单的菜单,其中子菜单包含一个"后退"选项(我要么使用goto还是返回)

Jon*_*oni 10

这里合理的做法是使用循环.它具有与a相同的效果,goto但被认为是更好的实践,因为它遵循结构化编程的规则,而不是之前常见的不可维护的面条汤编程.

int main(void) {
   while (1) {
      //some code
   }
}
Run Code Online (Sandbox Code Playgroud)

如果递归具有明确定义的限制,则递归调用函数也可以被认为是好的样式.C中的无限递归通常会导致堆栈溢出错误,因为很少有编译器实现尾调用优化.