手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

C语言视频 VS2015:[19]goto label

时间:2024-10-25 04:54:04

VisualStudio 2015的发布,跟随而来的相关的教程的空白,这里讲逐步在VisualStudio 2015呼鳏魇杰上讲解C语言相关的系列视频教程经验(注:由于视频修改难度大,所以先暂时发布文档,视频后期逐步补上),本文主要涉及:①label的命名规则和使用原则;②goto语句的使用方法;③goto语句的缺陷进行举证;

工具/原料

Visual Studio 2015

Windows 8.1 x64

label

1、label命名是语句命名的一部分,label定义需要跟随一个冒号”:“,但不是标号(纯数字label)的一部分,label在使用的时候紧紧的跟在goto关键词的后面,label的名称在不同的函数间是可以重名的;

C语言视频 VS2015:[19]goto label

2、下图是函数外使用label,编译器报错的情况;说明:label只能够用在函数内

C语言视频 VS2015:[19]goto label

3、下图是 label名在同一个函数中重名时编译器报错的情况;说明:label在同一个函数中不能够重名;

C语言视频 VS2015:[19]goto label

4、下图是label名在不同的函数中重名时正常使用的情况;说明:label在不同的函数中可以重名;

C语言视频 VS2015:[19]goto label

5、下图是使用纯数字作为label时,编译器报错的情况;说明:label不予许使用纯数字来命名;

C语言视频 VS2015:[19]goto label

goto

1、goto又称为强制跳转语句,下图是msdn对于goto语句的解释

C语言视频 VS2015:[19]goto label

2、下图是goto语句的最简撮劝丛食单的用法,程序一开始,goto到了labelA,然后直接跳过了语句:printf("label can&#泌驾台佐39;t throught here.\n");,继续执行labelA处的语句:printf("label will throught here.\n");的效果图

C语言视频 VS2015:[19]goto label

3、下图演示了goto和label不再一个函数中使用时编译器报错的情况;说明:goto和label必须在一个函数内使用;

C语言视频 VS2015:[19]goto label

4、label仅仅对goto语句有意义,在其他的任何上下文中,label语句是不会被执行的,如下图所示,通过汇编的形式,可以看到,label出的汇编代码就不存在;

C语言视频 VS2015:[19]goto label

goto缺陷

1、如下图所示的程序,当程序执行到了printf的时候会弹出如下的错误信息;

C语言视频 VS2015:[19]goto label

2、原因在于:①程序一开始便直接跳转到了 labelA处;②导致 int Value = 100;这一行并没有执行;③ nValue在内存中是不存在的;④当执行 printf的时候,当调用 nValue的时候,就出现了内存越界;

3、正是由于上述的缺陷的存在,所以msdn也建议:一个号的程序风格是在能够使用 break,continue,return代替goto的地方,尽量使用break,continue,r髫潋啜缅eturn代替goto语句,由于break语句只能够跳出一层循环,所以在深度循环的时候,可能跟需要goto语句,如下图msdn上面的例子:

C语言视频 VS2015:[19]goto label
C语言视频 VS2015:[19]goto label

4、方便他人亦是方便自己,如果觉得还行就点下下边的投票吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!

C语言视频 VS2015:[19]goto label
© 手抄报圈