在没有接触函数之前,我写一个判断一个数是奇数还是偶数的代码是这样的:

函数定义和声明中所遇到的问题_嵌套


学习后,我是这样写的:

函数定义和声明中所遇到的问题_函数定义_02

然后我就想啊,这个 f 函数能不能放在main函数后面:

函数定义和声明中所遇到的问题_重定义_03

结果发现好像也可以...

然后我再加个之前学的菜单函数上去,结果报错了(还报了两个警告):

函数定义和声明中所遇到的问题_函数定义_04

函数定义和声明中所遇到的问题_main函数_05

于是我查了一下这个是怎么回事

如果在main函数后书写被调函数,就需要在调用该函数前进行声明(如果不进行声明,会默认该函数为int类型),如果没有声明,就可能会出现重定义的情况(即原本函数类型不是int类型,比如我上面的menu函数),而f函数由于原本就是int类型的函数,所以之前还是可以运行。

修改后如下:

函数定义和声明中所遇到的问题_函数定义_06

然后我实验了一下,其实函数的声明只要在函数被调用前书写就行了...

函数定义和声明中所遇到的问题_重定义_07


但是为了规范(省事点),一般把函数定义写在main函数前。

特别地,不能把函数定义写在main函数内(即嵌套定义),但函数可以嵌套使用。




如有不对,欢迎指正。


顺带更正一下:void main这个函数,经过我在网上查询,发现之前的一个观点是错误的,void表示空类型,我当初写void main以为它没有返回值,但是main函数是有返回值的。

函数定义和声明中所遇到的问题_main函数_08