关闭
搜索
搜索
本版
帖子
用户
热搜:
程序员
简洁模式
高级模式
用户组: 游客
消息
提醒
新听众
我关注的
帖子
道具
勋章
任务
设置
退出
请
登录
后使用快捷导航
没有帐号?
立即注册
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
or
立即注册
快捷导航
搜索
首页
论坛
BBS
MCU单片机技术
程序员交流
C/C++编程笔记:C语言的goto语句,为什么老师反复强调不能用?
[复制链接]
作者:
丁r
版块:
›
嵌入式操作系统
›
linux
发布时间:
2020-9-8 20:29:13
1671
0
返回列表
丁r
当前离线
中级会员
中级会员, 积分 318, 距离下一级还需 182 积分
中级会员
中级会员, 积分 318, 距离下一级还需 182 积分
积分
318
发消息
楼主
电梯直达
丁r
发表于 2020-9-8 20:29:13
|
只看该作者
|
倒序浏览
|
阅读模式
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++编程!
弯道超车,快人一步!
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
C语言编程学习软件
C语言学习视频
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
收藏
0
相关帖子
•
如何使用semanage和避免禁用SELinux?
•
Python常用的12个GUI框架
•
大联大友尚集团推出基于STSTM32Cortex-M4的码表方案
•
在linux下安装JDK,Tomcat以及Mysql
•
Cpufetch:一款功能强大的CPU架构信息爬取工具
•
新版LinuxKernel支持M1处理器仅对应Mac不包括iPadPro
•
一个惊人快速的终端录像工具,也能录制VSCode和Chrome窗口
•
超详细的PyCharm教程,必须收藏!
•
Linux用户宝典:值得一用的5款远程桌面应用程序
•
《Linux内核编码风格》官方手册最新中译本
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
表情
@朋友
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表