目录
1.前言
在日常C语言编程中似乎很少用到goto语句,这是因为break、continue、return语句(本质上其实都是受了限制的goto语句)足以应付需要使用goto语句的大多数情况。
尽管如此,对比break和continue作为跳转语句都是受限制的,前者跳转的目标是跳出自身所在循环,而后者跳转的目标是自身所在循环的开始位置。而goto语句则可以跳转到函数中任何有标号的语句处。所以由于这种特性,goto语句对于嵌套循环的退出有奇效!但是过度的使用也会产生逻辑不清,层次不清,程序不易阅读的问题。所以不应随意滥用。
2.具体使用
(1)goto语句的语法结构如下:
标识符:语句
goto 标识符;
例如执行语句goto Q;,控制会转移到标号Q后面的语句中,而且要注意的是该语句必须和goto语句在同一个函数中。
(2)流程图如下:
(2)goto语句实现关机实例:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>\
#include<stdlib.h>
int main()
{
char arr[20] = { 0 };
system("shutdown -s -t 60");
again:
printf("你的电脑将在一分钟后自动关机,请输入:阻止关机,请停止关机");
scanf("%s", arr);
if (strcmp(arr, "阻止关机") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
使用while语句代替goto语句:
//while语句实现关机程序
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>\
#include<stdlib.h>
int main()
{
char arr[20] = { 0 };
system("shutdown -s -t 60");
while (1)
{
printf("你的电脑将在一分钟后自动关机,请输入:阻止关机,请停止关机");
scanf("%s", arr);
if (strcmp(arr, "阻止关机") == 0)
{
system("shutdown -a");
break;
}
}
return 0;
}
前面也讲到goto语句的强项是实现跳出复杂前台循环,例如以下情况:
//goto语句跳出嵌套循环
for (...)
for (...)
{
for (...)
{
if (disaster)
goto error;
}
}
...
error:
if (disaster)
今天分享到这里,希望大家一起提高!