汉扬编程 C语言入门 C语言备受争议的冷门知识goto语句,\”慎用\”非\”禁用\”

C语言备受争议的冷门知识goto语句,\”慎用\”非\”禁用\”

今天我们要讨论的是C语言中相对比较冷门的知识关键字goto!

goto关键字基础知识关键字goto表示无条件跳转的意思,类似汇编中的jump指令,在C语言中的使用格式是:goto label,表示跳转到label的位置,并且我们的label一般都写在语句的开头,写成label:的形式。如下面程序案例:

使用注意点:

goto label;后面有分号。goto只能在函数内部无条件跳转,不能从一个函数跳转到另外一个函数。label:的标识在使用goto语句的前后均可,不遵循先定义后使用。label的作用域在函数内部,不同函数之间可以定义相同的label。goto关键字的争议对于goto的使用C语言界算是争议不断,并且大部分大学C语言老师在讲到到goto这关键字的时候一般都会叫大家慎用goto关键字。既然goto语句C语言标准中定义了,有句话说得好,"存在即合理"。大家不滥用即可。goto关键字非常的灵活,其实goto本身的功能是非常简单的,就是一个跳转到所定义的标签label位置,灵活的地,例如下代码:

尤其是嵌套层数更多的情况下,使用goto做为跳转更为简单,不信你看:

所以goto语句还是一个非常有潜力的关键字,对于设计巧妙高效的算法会非常有用!所以个人觉得只要对goto语句的使用加以管束为我们开发服务,这未尝不是一件好事。

Linux中的goto读过Linux相关代码的小伙伴会发现goto语句的使用无处不在,这里我复制部分代码来欣赏一下,更多的妙用大家可以自行阅读Linux内核源码。

goto不能释放内存,但是利用goto语句可以使程序严谨,你仔细看看上面的例子,用了goto,不论程序走什么分支,分配了的内存都得到了释放。如果直接return,那么前面分配的空间就在没释放就退出程序了。

尾言好了,今天的内容就到这里吧,看完这个文章希望大家能够有点收获吧,也希望大家能帮忙三连下,

如果阁下C语言比较差的,二进制都不知道是什么的同学,不妨关注下小编的专栏视频教程

《C语言51课视频教程合集》

《C语言数据结构那点事儿》基础版哦

通俗易懂,深入浅出,一个视频只讲一个知识点。视频不深奥,不需要钻研,在公交、在地铁、在厕所都可以观看,随时随地涨姿势,人人都可以学习的视频教程

C语言数值运算与非数值运算的区别?

不同数据类型之间的转换有2种方式:隐式转换和显式转换。

隐式转换指的是默认做的一些转换式,比如整形和实型做混合运算(这里我说的运算是合法的运算,不会是取余这样对操作数有数据类型要求的运算),得到的结果是自动由精度低的或占位数低的数据类型向高的数据类型做转换,也就是上述问题得到的结果是实型。

显示转换:指的是使用强制类型转换运算符来进行强制的结果类型转换,这是人为的得到想要的类型的一种方法。

你所描述的不同数据类型的数据在运算时,采取的多是隐式转换。

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/7078.html

MicroPython 中用C语言扩展模块教程(一)

新手小白整理C语言笔记备忘,带你十分钟理解C语言

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部