手机浏览器扫描二维码访问
我和小弦子兴致冲冲地打开了各自电脑上的编辑器,按照老爹刚才所将的内容,依葫芦画瓢定义了add函数。
「呀!
编译出错了!
」
我确认了一边代码的书写应该没有错,然后凑近小弦子的屏幕看了看他那边的情况,没想到小弦子那边居然没有出任何问题,编译成功了!
这是怎么回事?
借住翻译软件,我大概弄明白了错误信息,原来是我定义函数的地方有误。
通过对比我和小弦子的代码,我发现自己定义函数的位置在main函数中,而小弦子定义在main函数之外。
「在c语言中,一个函数是不能定义在另外一个函数之内的!
」
老爹不着痕迹地看了我的代码一眼,瞬间就看出了问题所在。
「原来是这样!
」
我在心里说了一声,然后就将代码剪切粘贴到main函数后边,至于为什么是后边嘛,因为小弦子放在前边的,我可不想和他一样。
这回编译倒是通过了,但是报了一个警告信息:「implicitdeclarationoffunctionadd」
意思是函数add隐式声明。
这让我一头雾水,隐式声明又是个什么鬼意思?关键是小弦子那边什么信息都没有输出!
难道问题出在顺序上面?
我在心中暗自狐疑,因为现在我和小弦子的代码唯一不同的地方就是定义main函数和add函数的位置不一样。
小弦子那边add函数定义在main函数前,而我定义在main函数后边。
为了验证心中的猜想,于是我又将它们的顺序调换了一下,警告信息果然消失了!
我运行了一下,程序得到了预期的结果,证明逻辑是没有问题的。
接着我又将mian和add顺序恢复到原来的样子,再次编译,警告信息果然又出现了。
我尝试着运行程序,居然也得到了正确的结果!
「刚才我就说了,在使用一个函数之前,必须要先声明它,否则就会报『implicitdeclarationoffunctionadd』警告。
所以我们在main函数中使用add函数,就应该在main函数之前声明add。
当然了,如果在程序中我们压根就没有定义这么一个函数,除了会有这句警告之外,还会有一个错误:『undefinedreferencetoadd』」
我试了一下,果真如同老爹所言。
「那为什么我在main函数后面声明add,程序运行的结果依旧是对的呢?」
「这个就是c语言不严谨的地方了,以后随着你们逐渐深入了解c语言,其实类似这样的问题还有很多。
所以后来的c对这些问题进行了修复,整个体系就更为严谨、标准化。
」
老爹笑了笑。
「哦,好吧!
原来那些开发c语言的科学家也会有bug的时候啊!
」
「当然了,我之前都给你说过了,无论是技术多么牛的程序员,都不可能排着胸脯说自己的程序没有任何的bug,特别是软件体系特别庞大的时候。
其实刚刚那个问题,add也不是不可以放在main函数后面,如果我们把函数的声明和实现分开的话就行了。
函数的定义分为声明和实现两个过程,你们现在写的这种形式是将两个过程融合在一起了,如果我们把add的声明放在main函数前边,定义放在后边就不会有警告信息了,就像这个样子:
intadd(inta,intb);
三百根盘虬卧龙的铜石巨柱,星罗密布,遮天蔽日,高达数十丈,在这片石柱林之上,乃是黑压压的一片,那是嘉雁城最宏伟的三大建筑之一,曾经的天门,如今的北宫武馆。今日的北宫武馆,云台登天处人群密集,而平时用...
被亲妹妹算计,抢走家族荣誉还不算,连青梅竹马的未婚夫也被抢走!夏小汐发誓,要报仇!伙同男闺蜜制造复仇计划,咦?结婚证上这是谁?一不留神嫁给男闺蜜的舅舅墨夜霆!墨夜霆是谁?那个富可敌国权势滔天的男人!据说还是个GAY!管他呢,先虐了渣渣再说。可是,虐完渣以后呢?离婚该提上日程了,可他对她却日日宠,夜夜宠,化身宠妻狂魔。十天有八天起不来床的夏小汐,欲哭无泪,不是说他是GAY吗?GAY你大爷!...
商场沉浮的一生,没有善恶只有生存,重生后拥有左右世界的能力,却迷失了方向直到遇到那些女孩,改变了他。韩娱,偏少时,不喜勿喷扣扣群146120447有兴趣的朋友可以进来聊聊...
伴随着魂导科技的进步,斗罗大陆上的人类征服了海洋,又发现了两片大陆。魂兽也随着人类魂师的猎杀无度走向灭亡,沉睡无数年的魂兽之王在星斗大森林最后的净土苏醒,它要带领仅存的族人,向人类复仇!唐舞麟立志要成为一名强大的魂师,可当武魂觉醒时,苏醒的,却是旷世之才,龙王之争,我们的龙王传说,将由此开始。...
一个现代的雇佣兵,一个纵横美国西海岸地下势力的强者。在一次意外中,穿越到1909年的清末。一个土豪的家庭,一支二百人的武装护庄。主角大胆决定,艰难起步,开始掀起一场民族复兴崛起之路。国防军参谋部群号,1235387(又不满了)国防军司令部群号44745892(热情开放)...
重生之天才神棍由作者凤今创作全本作品该小说情节跌宕起伏扣人心弦是一本难得的情节与文笔俱佳的好书919言情小说免费提供重生之天才神棍全文无弹窗的纯文字在线阅读。...