goto语句(转)
来源:互联网 发布:淘宝店铺怎样分类宝贝 编辑:程序博客网 时间:2024/06/18 05:16
goto无条件跳转语句,建议尽量少的使用,不符合结构化程序的设计思想。
... goto state; p=(struct s *)malloc(...);//被goto跳过,没有初始化 ... state: ; ...
{ while(condition2) { while(condition3) { if(some disaster) goto quit; } } while( status == OK && condition2) { while( status == OK && condition3) { if(some disaster) { status = EXIT; break; } } }
语法形式:goto 语句标签 ;
要使用goto语句,必须在希望跳转的语句前面加上语句标签。语句标签就是标识符后面加冒号。包含这些标签的goto语句可以出现在同一个函数中的任何位置。
例1: #include int main(void) { goto l1; l1:printf("%d",5); return 0; }
例2:struct s *p=NULL;
但是,当需要跳出多层嵌套的循环时,使用goto语句可能会非常合适。由于break语句只影响包围它的最内层循环,要想立即从深层嵌套的循环中推出只有一个办法,就是使用goto语句,如下例所示:
while(condition1)
}
quit: ;
想在这种情况下避免使用goto语句有两种方案。第一个方案是当你希望退出所有循环时设置一个状态标志,但这个标志在每个循环中都必须进行测试:
enum { EXIT, OK } status;
....
status = OK;
while(status == OK && condition1)
{
}
这个技巧能够实现退出所有循环的目的,但情况被弄得非常复杂。另一种方案是把所有的循环都放到一个单独的函数里面,当灾难降临到最内层的循环时,你可以使用return语句离开这个函数。
0 0
- goto语句(转)
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto语句
- goto 语句的使用(1)
- goto 语句的使用(2)
- 08.栈(二)栈的应用
- CF22B 最大子矩阵问题简单版
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- jq弹出层与自动隐藏,屏幕居中显示,弹出层的移动原理
- c++ 正则表达式
- goto语句(转)
- mysql字符串连接函数
- 数字万用表使用方法
- 也说说谭浩强
- Live555接收H264流判断关键帧
- Linux I2C驱动分析(二)----I2C板级设备扫描和数据传输
- 重构-以函数对象取代函数
- VIM C++ 成员自动补全插件
- 二叉树的先序、中序、后序非递归遍历的实现