程序媛养成计划/全文阅读/任煦之秋 最新章节无弹窗/forif弦子

时间:2018-04-07 02:57 /二次元 / 编辑:老韩
主角是int,弦子,if的书名叫《程序媛养成计划》,是作者任煦之秋写的一本随身流、现代都市、阳光类小说,情节引人入胜,非常推荐。主要讲的是:我和小弦子兴致冲冲地打开了各自电脑上的编辑器,按照老爹刚才所将的内容,依葫芦画瓢定义了add函数。 「呀!编译出错了!」 我确认了一边代码的书写应该没有错,然

程序媛养成计划

小说年代: 现代

主角名字:int弦子forif

需用时间:约1天读完

《程序媛养成计划》在线阅读

《程序媛养成计划》第35部分

我和小弦子兴致冲冲地打开了各自电脑上的编辑器,按照老爹刚才所将的内容,依葫芦画瓢定义了add函数。

「呀!编译出错了!」

我确认了一边代码的书写应该没有错,然凑近小弦子的屏幕看了看他那边的情况,没想到小弦子那边居然没有出任何问题,编译成功了!

这是怎么回事?

借住翻译件,我大概了错误信息,原来是我定义函数的地方有误。

通过对比我和小弦子的代码,我发现自己定义函数的位置在main函数中,而小弦子定义在main函数之外。

「在c语言中,一个函数是不能定义在另外一个函数之内的!」

老爹不着痕迹地看了我的代码一眼,瞬间就看出了问题所在。

「原来是这样!」

我在心里说了一声,然就将代码剪切粘贴到main函数边,至于为什么是边嘛,因为小弦子放在边的,我可不想和他一样。

这回编译倒是通过了,但是报了一个警告信息:「implicit declaration of function add」

意思是函数add隐式声明。

这让我一头雾,隐式声明又是个什么鬼意思?关键是小弦子那边什么信息都没有输出!难问题出在顺序上面?

我在心中暗自狐疑,因为现在我和小弦子的代码唯一不同的地方就是定义main函数和add函数的位置不一样。小弦子那边add函数定义在main函数,而我定义在main函数边。

为了验证心中的猜想,于是我又将它们的顺序调换了一下,警告信息果然消失了!

我运行了一下,程序得到了预期的结果,证明逻辑是没有问题的。

接着我又将mian和add顺序恢复到原来的样子,再次编译,警告信息果然又出现了。我尝试着运行程序,居然也得到了正确的结果!

「刚才我就说了,在使用一个函数之,必须要先声明它,否则就会报『implicit declaration of function add』警告。所以我们在main函数中使用add函数,就应该在main函数之声明add。

当然了,如果在程序中我们蚜雨就没有定义这么一个函数,除了会有这句警告之外,还会有一个错误:『undefined reference to add』」

我试了一下,果真如同老爹所言。

「那为什么我在main函数面声明add,程序运行的结果依旧是对的呢?」

「这个就是c语言不严谨的地方了,以随着你们逐渐入了解c语言,其实类似这样的问题还有很多。所以来的c对这些问题行了修复,整个系就更为严谨、标准化。」

老爹笑了笑。

「哦,好吧!原来那些开发c语言的科学家也会有bug的时候!」

「当然了,我之都给你说过了,无论是技术多么牛的程序员,都不可能排着脯说自己的程序没有任何的bug,特别是系特别庞大的时候。

其实刚刚那个问题,add也不是不可以放在main函数面,如果我们把函数的声明和实现分开的话就行了。

函数的定义分为声明和实现两个过程,你们现在写的这种形式是将两个过程融在一起了,如果我们把add的声明放在main函数边,定义放在边就不会有警告信息了,就像这个样子:

int add(int a,int b);

int main(int argc, char const* args[])

{

int sum = add(a, b);

printf(“sum =%d“, d);

}

int add(int a,int b)

{

int sum = a b;

retu sum;

}

声明一个函数,其实只需要三个元素:函数名,参数列表和返回值,这个时候就不用大括号了,而是用分号。

惧剔的实现就和我们之讲的内容一样了。

如果函数的实现在调用在,其实是不用声明的,就像你们现在这种情况。但是不建议这样做,因为当函数调用关系比较复杂的时候,我们不好调整实现顺序,所以正规的做法是在#include之声明所有要定义的函数,然在main函数之或者自逐一实现。」

我尝试了一下老爹所说的,警告信息果然消失了。而且我还发现了一个比较有趣的东西,那就是如果我只对函数行声明但是不实现它,这个时候编译器不会再报「implicit declaration of function add」警告,只会有「undefined reference to add」错误。

接下来老爹又给我们演示了有参数,没有返回值、没有参数,有返回值,没有参数,也没有返回值的几种情况,这样一来,我们对函数的定义就有了初步的认识。

「既然函数的定义和调用已经没有问题了,那么我们接着再来说说之玥玥提出的问题,在main函数里边有个名为sum的量,而add里面也有这么一个量,按照之我的说法,量的名字不能重复。

但是程序现在已经正常运行了,说明是没有问题的,那是不是意味着我之说的是错误的呢?

其实这个说法的确是有问题的,应该要加一个限定条件,在同一个作用域里面,不能声明两个名称一样的量。因为当时的着重点是将标识符起名规则,如果引入作用域,对你们来说很难理解。

至于什么是作用域,我们还是以现实中的例子来说明。

你们看哈,咱们现在住这个地方呢,是在光镇的辖区里边,那么光镇只能有一个镇对吧?而且光镇里边的大小事情都归镇管。」

我和小弦子点了点头,而接着听老爹讲:「那么我们可以说,镇的作用域就是一个镇,他只能管自己镇里的事情。

光镇是在郫都区的管辖范围之内,而郫都区又只能有一个区,整个区里面的大大小小的事务,都得由区来管,这其中当然也包括了光镇。

量也一样,量也有自己的作用域,而量的作用域,就是声明这个量所在的大括号中,例如:

int fieldarea()

{

int a = 100;

for(int i = 0; i < 10; i)

{

int b = i;

}

}

这里面的量a是在fieldarea函数的大括号中声明的,它作用域就是fieldarea函数,一旦脱离了这个范围就不能再使用了。而量b是在for循环的大括号中的,那么它的作用域就是一次for循环,也就是说每一次for循环都会重新声明一个量b。」

「那上一次循环的量b到哪儿去了?」

(35 / 58)
程序媛养成计划

程序媛养成计划

作者:任煦之秋 类型:二次元 完结: 否

★★★★★
作品打分作品详情
推荐专题大家正在读