c - C编程中的子菜单和菜单的goto vs return

标签 c goto

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

转到示例:

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

main(){
   //some code
   return main();
}

两者都会循环脚本。 但我想知道哪个更适合使用。

goto 看起来确实不错,但是使用它有什么缺点吗? (我只是想知道,因为 goto 函数 O.o,一位讲师让同学失败了,我想知道为什么,或者他所做的是合理的。)

如果你问为什么问这个,我正在尝试创建一个带有子菜单的菜单,其中子菜单包含一个“后退”选项(我会使用 goto 或 return)

最佳答案

这里合理的做法是使用循环。它与 goto 具有相同的效果,但被认为是更好的做法,因为它遵循 structured programming 的规则。而不是以前常见的无法维护的面条汤编程。

int main(void) {
   while (1) {
      //some code
   }
}

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

关于c - C编程中的子菜单和菜单的goto vs return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18310841/

相关文章:

c - 高斯消除期间段错误(核心转储)

c++ - 如何知道所使用的微软 C runtime 的版本?

c - 当 a 是数字时 while(!a) 是什么意思?

c - 在 C : Reading integers from a file

python - 相当于条件中的 GOTO,Python

Python:如何中断,然后返回到 while 循环,没有 goto?

c# - 绕过标记语句

c - 二叉堆数据结构——应用

c - goto构造是否创建新变量

php - GOTO 和 THROW 的区别?