距离上次更新本文已经过去了 730 天,文章部分内容可能已经过时,请注意甄别

这是初识 c 语言的第五篇文章了

虽然看的人不多,但我不会放弃哒

毕竟这也是给我自己的一个学习记录,不想写日记就用这个代替了!

goto 语句

c 语言中提供了可以随意使用的 goto 语句和标记跳转的标号

理论上来说,goto 语句没什么必要,因为我们可以用 whlie 等循环语句来替代它

  • goto 是类循环语句,其本身是关键字

goto 语句在某些场景下用的到,如终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两次或者多层的循环

这种情况下 break 达不到我们的目的。break 只能从最内层循环退出到上一层的循环

goto 语句真正适合的场景如下:

c
1
2
3
4
5
6
7
8
9
10
11
12
for(...) 
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
...
error:
if(disaster)//处理错误情况

用下面这个例子来给大家简单地演示一下 goto 的作用

c
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

int main()
{
printf("hello world\n");
goto again;
printf("你好\n");
again:
printf("hehe\n");
return 0;
}

结果如下

image-20210816095756281

可以看到,程序跳过了 printf (“你好 \n”);,直接到下一步打印 hehe

代码的执行流程图如下:

image-20210816095951025

其实 goto 的作用方式非常容易理解,即:走到 again

这时候程序会直接跳到 again 后面的代码,不管这个 again 是在 goto 的后面还是前面

需要注意的是,again 在前面必须在特定的循环 \ 条件代码中使用

如果你将上述的代码改成这样

c
1
2
3
4
5
6
7
8
9
int main()
{
again:
printf("hello world\n");
goto again;
printf("你好\n");
printf("hehe\n");
return 0;
}

那么代码就会一直打印 hello world,进入死循环

那 goto 就不是没有必要了,是毫无意义

image-20210816101924038

想知道 goto 在前面的时候要怎么书写代码吗

且听下回分解

(因为这个代码是个关机小程序,我感觉重新写一篇博客会更好)

点个赞再走吧,求求了!