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 语句都可能留下隐患。

时间: 2024-09-18 02:56:53

C语言goto关键字—尽量少用的相关文章

C语言中关键字auto、static、register、const、volatile、extern的作用

原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.extern 这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用: (1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的. (2)reg

c语言 goto 对应的标签作用范围

问题描述 c语言 goto 对应的标签作用范围 int main() { goto label; label: int i = 0; int j = 1; return (i+j); } 解决方案 C语言可能不行,但是C++肯定可以. http://codepad.org/xnipwnoK 在线验证通过 解决方案二: 没用过. 不过K&R的书里说最好不要用goto,维护起来会比较麻烦,容易出错. 解决方案三: 这个应该就是第一句,跳转到第二句吧

第二条、在类的头文件中尽量少引入其他头文件

第二条.在类的头文件中尽量少引入其他头文件 当我们在一个类中去引入另一个类的时候,我们经常会这样使用: #import "xxxx.h" 这是一种常见的方法,但是不够优雅.举个例子.在Driver类中 Driver.h #import <Foundation/Foundation.h> @interface Driver : NSObject @property(nonatomic)NSString *name; @property(nonatomic)NSString *

C语言按关键字搜索文件夹中文件的方法_C 语言

本文实例讲述了C语言按关键字搜索文件夹中文件的方法.分享给大家供大家参考.具体实现方法如下: 方法1: #include<iostream> #include<string> #include<io.h> using namespace std; void filesearch(string path,string mode) { struct _finddata_t filefind; if(path[path.size()-1]=='\\') path.resize

C++ 6.0语言goto语句能用switch判断当前源代码位置么?

问题描述 C++ 6.0语言goto语句能用switch判断当前源代码位置么? C++ 6.0语言goto语句能用switch判断当前源代码位置么?请问怎么得到当前执行的源代码的代码? 解决方案 写反了,可以用switch来判断,然后goto跳转

译言网站明天重出江湖 今后将尽量少涉及时政内容

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 去年11月30日,国内知名的翻译网站"译言"因为内容问题被封站.事后几天,原域名变成了官方博客.昨天,这个博客上发布消息称,明天--1月8日,改版后的译言网将重新上线. 据译言网成员王一辛介绍,原来打算是1月1日上线的,但因为ICP备案比预计迟了一点,加上用户内测发现网站有点问题没解决好,所以推迟了上线日期,顺便把

探讨C语言中关键字volatile的含义_C 语言

volatile 的意思是"易失的,易改变的".这个限定词的含义是向编译器指明变量的内容可能会由于其他程序的修改而变化.通常在程序中申明了一个变量时,编译器会尽量把它存放在通用寄存器中,例如ebx.当CPU把其值放到ebx中后就不会再关心对应内存中的值.若此时其他程序(例如内核程序或一个中断)修改了内存中它的值,ebx中的值并不会随之更新.为了解决这种情况就创建了volatile限定词,让代码在引用该变量时一定要从指定位置取得其值. 关键字volatile有什么含意?并给出三个不同的例

传雅虎与阿里沟通想恳求尽量少出售阿里股份

据科技博客Re/Code报道,阿里巴巴(滚动资讯)已经就IPO问题和SEC广泛交流意见,目前没有出现值得担忧的问题.如果一切顺利,7月底将展开路演,并毫无疑问会获得超额认购,而可供购买的股份其实非常有限,大部分来自雅虎(33.25,&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;-0.23, -0.68%)必须出售的阿里股份.雅虎则正尽力请求能少出售一些阿里股份. 对阿里上市而言,7月将会是忙碌的月份--集团的公开

求Silverlight中转GB2312得方法,要求算法优的,尽量少占CPU

问题描述 GB2312Encoding.cs的类在网上下过,但是处理大量数据的时候很占CPU,有没有更好的方法!3Q 解决方案 解决方案二:那就不要在Silverlight中用GB2312.用任何Unicode编码不都达到同样目的?解决方案三:GB2312Encoding.cs的类在网上下过?这种方法.net本身就有啊System.Text.Encoding.GetEncoding("GB2312").GetString(bytes数组)解决方案四:引用2楼net_lover的回复: