C语言goto关键字—尽量少用

简介:
一般来说,编码的水平与goto 语句使用的次数成反比。有的人主张慎用但不禁用goto语句,但我主张禁用。关于goto 语句的更多讨论可以参看Steve McConnell 的名著《CodeComplete. Second Edition》。


禁用goto 语句。自从提倡结构化设计以来,goto 就成了有争议的语句。首先,由于goto 语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格;其次,goto 语句经常带来错误或隐患。它可能跳过了变量的初始化、重要的计算等语句,例如:
   struct student *p = NULL;
   …
   goto state;
   p = (struct student *)malloc(…); //被goto 跳过,没有初始化
   …
   state:
   //使用p 指向的内存里的值的代码
   …
如果编译器不能发觉此类错误,每用一次goto 语句都可能留下隐患。
相关文章
|
6天前
|
存储 程序员 C语言
C语言关键字是什么?什么是关键字?什么是字符和ascll码值
C语言关键字是什么?什么是关键字?什么是字符和ascll码值
|
6天前
|
算法 C语言
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
6天前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
6天前
|
安全 编译器 C语言
C语言中的const关键字
C语言中的const关键字
18 2
|
6天前
|
程序员 C语言
在C语言中,typedef是一种用来创建新的数据类型名的关键字
在C语言中,typedef是一种用来创建新的数据类型名的关键字
11 0
|
6天前
|
存储 编译器 C语言
C语言的关键字
C语言的关键字
18 0
|
6天前
|
存储 编译器 C语言
c语言中的关键字
c语言中的关键字
10 0
|
6月前
|
存储 安全 编译器
13 C++ - const关键字(比较C语言)
13 C++ - const关键字(比较C语言)
46 0
|
7月前
|
存储 缓存 编译器
C语言标准定义的32个关键字
C语言标准定义的32个关键字
110 0
|
6天前
|
编译器 程序员 Linux
深入理解C语言中的return关键字与函数返回机制
深入理解C语言中的return关键字与函数返回机制