佳邦 INPAQ · 产品与技术资料捷比信主站 · 综合产品与服务
佳邦 INPAQ天线、保护与磁性元件
捷比信产品咨询0755-29796190

goto语句对与错

许多书会使用“ goto”或“ goto”。作为否定的教科书,认为如果使用不当,会引起很多意想不到的问题。
但是作为C语言的一部分,goto是合理的。后藤既有缺点,也有优点。
缺点:容易弄乱逻辑并增加理解的难度。 Goto可以实现无条件的跳转。
跳转后,您将忽略很多先前的代码,尤其是在逻辑上很复杂的地方,这很容易引起问题。因此,可以在没有它的情况下使用goto,尤其是对于新手,请避免忌讳。
优点:处理异常情况特别方便,尤其是内存等系统资源的释放。许多大型项目,开源项目(包括Linux内核)将使用goto处理异常情况。
例如,在以下情况下,每个人的第一反应是没有问题,实际上,存在内存泄漏的隐患。如果变量pdate2应用程序失败,则函数退出。
然后问题来了。 pdate应用程序成功,但未发布,并且存在内存泄漏。
因此,如果在这种情况下使用goto,则很容易解决问题。 int module_init(){char * pdate =(char *)malloc(100); if(pdate == NULL)返回-1; char * pdate2 =(char *)malloc(100); if(pdate2 == NULL)返回-1;免费(日期);免费(pdate2); ......}转到实现代码int module_init(){char * pdate =(char *)malloc(100); if(pdate == NULL)转到err; char * pdate2 =(char *)malloc(100); if(pdate2 == NULL)转到err;免费(日期);免费(pdate2); ...... err://统一错误处理if(pdate!= NULL)free(pdate); if(pdate2!= NULL)免费(pdate2); return -1;}另一种写法是分阶段进行处理:if(pdate == NULL)goto err1; if(pdate == NULL)转到err1; if(pdate == NULL)(pdate2 == NULL)转到err2; ... err1:free(pdate); err2:free(pdate2); ...摘要:存在是合理的,好坏取决于如何使用它。
-END-来源|二元生命作者|二进制生命|本文经过编译以传播相关技术,并且版权归原作者所有。 | |如有侵权,请联系删除| [1]干货:嵌入式C语言源代码优化程序[2] C语言内存泄漏非常严重,该如何处理? [3] C语言函数指针的回调函数[4]光刻机的原理分析—光刻机“雕刻”到底是什么? [5]华为即将在宏梦OS之后发布国内编程语言!。

相关资料

米家纯智能加湿器,使湿度恰到好处半导体供应链价格飙升爆发预计到2021年底,台积电将拥有55台光刻机三星静音语音助手专利解密:可以完成准确的语音识别任务小米智能遥控车在小米专卖店开业预约:价格199元三星Galaxy W21 5G认证iGame GeForce RTX 3080 Vulcan 10G显卡的理论性能得到极大提高波音公司的星际载人航天器软件通过了NASA审查并于3月飞行最新消息!苹果开始销售迪士尼电影的4K版本realme加入智能闪光灯充电技术的战场,最快的黑色技术正式发布华为的招聘广告在24年前是什么样的?今年第三季度的全球电视出货量创下了“历史新高”。揭开神秘面纱!十大最受欢迎的女友职业排名鸿海与AI初创公司合作部署人工智能和电动汽车缓冲步骤以加载AI模型5G与普通人之间的距离有多远?蓝屏重启后黑屏解决方案OPPO宣布:10月19日将正式发布首款55和65两种尺寸的智能电视iOS14有一个内核漏洞MiBox是传统的Android电视机顶盒产品