C语言提供了goto语句,实现“无条件跳转”功能。定义格式如下:
goto 标号;
其中“标号”是一个标识符,例如变量名这样的一个标识符。标号的定义格式如下:
标号:
就是直接写一个标识符,然后,在末尾使用冒号:结束。其中,标号可以放在goto语句的前面或后面。如下是一个程序测试例子:
程序运行结果如下:
可以看到,我们在程序中定义了一个标号label,然后,执行goto label;时,程序就无条件直接跳转到 label标号执行,越过了printf("执行程序 ...\n");语句的执行。
注意:goto语句只能够在函数内进行跳转,不可以跨越函数跳转。很多资料都不提倡使用goto语句,说它使代码结构混乱,随意跳转。
但是,在合适的地方,合理地使用goto语句还是很不错的。例如,在一个函数中,申请了大量的内存和资源,而且进入多层while嵌套循环中执行;那么,运行的时候,出现异常,要求退出函数。
此时,可以结合goto语句使用,直接退出多层while循环,跳转到函数的末尾,释放资源,退出函数。在Linux内核中,就经常使用goto语句,当代码检测到异常,直接goto跳转到异常处理的代码处。