一段代码,这里为什么用exit(1)而不是return 1?还有如何解读这种避免String = NULL的方式?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

一段代码,这里为什么用exit(1)而不是return 1?还有如何解读这种避免String = NULL的方式?

2016-06-08 22:33:55 2219 1

学校C语言课的PPT,关于 Command line arguments的,讲的很粗,例题直接看不懂。
直接上图片了,因为有老师的标注,截图比较完整。
我的疑问在于,
1.虚线框内的代码有什么作用,老师说为了避免String = NULL?并不理解。
2.为什么用fprintf并且括号内是stderr?如果没有特殊作用,那我就理解为老师只是为了演示课堂内容了……
3.这里为什么exit()和return混用,各有什么目的?

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:32:51

    原本不打算回答的,但看了楼上vczh的回答,我不太赞同,所以还是发表一下自己的看法吧,如有错误敬请指出。

    因为这段程序需要传入2个参数,后面的2个if语句就是用来读取这2个参数的。而所有程序在运行时第一个参数都是该程序本身的可执行文件的名称,所以为了保证程序传入了2个参数,就需要判断argc的值是否等于3。如果不提前判断,后面的2个if语句中就可能会读取到错误的数据(也就是vczh所说的野指针数据)

    将普通信息和错误信息分别输出到“标准输出”和“错误输出”中,是一种良好的习惯,这样用户就可以方便地区分正常输出和错误输出,例如把两者重定向到不同的日志文件

    对于只有一个线程的程序,在main中使用exit和return的效果是一样的,都是结束程序。但如果不是在main函数中,或者程序开了多个线程,那么return就无法达到退出程序的目的了。所以退出程序使用exit是一种良好的习惯。第一,它看起来清晰,exit一眼就知道是用来退出的;第二,它可以保证在任何情况下都能正确退出程序,例如我前面所说的开启了多线程或当前不在main函数中的情况。

    最后一点是我和vczh观点最大的不同。我认为,当你的意图是主动、并且是确定地要退出程序时,就用exit,不要用return,其他情况,用return。

    我认为你老师的这个程序写的很好,最后一句之所以用return,是因为程序已经执行到最后,main方法是时候“返回”了,这句代码的意图更强调的是main方法正常结束了,而不是我要在这里退出程序,所以这里用的是return(正常返回),而不是exit(强调的是我要让程序退出)——虽然2者在效果上是一样的。

    0 0
相关问答

0

回答

Flink web ui上传jar包,绿条卡住不动是怎么回事?

2022-06-08 17:36:54 214浏览量 回答数 0

1

回答

使用flink sql 创建kafka表后去读,你们有没有遇到过这样异常类似:“kakf#Flink

2021-01-24 21:54:40 2067浏览量 回答数 1

1

回答

网页编程:如何用php+javascript选中多选框的某一值:报错

2020-06-08 18:50:47 330浏览量 回答数 1

1

回答

sun.net.ftp.FtpClient怎么判断需要上传的路径下文件夹是否存在(JAVA)?报错

2020-06-06 20:50:01 763浏览量 回答数 1

1

回答

弹性盒子中 flex: 0 1 auto 表示什么意思#前端面试

2020-05-23 12:52:20 1483浏览量 回答数 1

1

回答

iOS 中retainCount=-1和一长串数字

2016-06-30 18:20:10 1697浏览量 回答数 1

1

回答

ubuntu eclipse 不能搭建 javaweb工程

2016-06-02 10:50:44 1929浏览量 回答数 1

1

回答

如何优化这样处理UI的JavaScript代码写法?

2016-03-26 08:33:15 1667浏览量 回答数 1

1

回答

javascript如何在上传框中获取本地文件的地址

2016-03-23 14:10:49 2185浏览量 回答数 1

1

回答

java script 语句,判断用户名必须为8位数字的语句怎么写?

2016-03-18 10:57:19 2124浏览量 回答数 1
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载