函数原型能告诉编译程序一个函数将接受什么样的参数,将返回什么样的返回值,这样编译程序就能检查对函数的调用是否正确,是否存在错误的类型转换。例如,现有以下函数原型;
崇阳网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联公司于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
int
some_func(int,char·,long);
编译程序就会检查所有对该函数的引用(包括该函数的定义)是否使用了三个参数并且返回一个int类型的值。如果编译程序发现函数的调用或定义与函数原型不匹配,编译程序就会报告出错或警告消息。例如,对上述函数原型来说,当编译程序检查以下语句时,就会报告出错或警告消息:
x
=
some_func(l);
/*
not
enough
arguments
passed
*/
x
=
somc_funcC*HELLOl",
1,
"DUDE:");
/*
wrong
type
of
arguments
used
*/
x
=
aome_funcd,
sir,
2879,
"T");
/*
too
many
arguments
passed
*/
下例中的函数调用同样是不正确的,因为函数some_func()的返回值不是一个long*类型的值。
lValue=some_func(1,str,2879);
/*some_rune()returns
anint,not
a
long*
*/
同样,编译程序还能检查函数的定义(或函数体)是否与函数原型匹配。例如,当编译程序检查以下函数定义时,就会报告出错或警告消息:
int
some_func(char
*string,longlValue,int
iValue)
/*
wrong
order
Of
{
parameters
*/
......
}
总之,在源文件中说明函数原型提供了一种检查函数是否被正确引用的机制。目前许多流行的编译程序都会检查被引用的函数的原型是否已在源文件中说明过,如果没有,就会发出警告消息。
这个程序可以这样分析,其实很简单,首先你要添加上去#include
这个头文件,其次你就这样记忆:要是main()函数在被调用函数的前面,也就是像你所说的这样情况的话,就必须在main()函数前面对被调用函数进行声明才可以正常调用函数,不然编译会出错的,
如果被调用函数出现在在了main()函数的上面,也就是mian()函数和你现在max函数位置调换一下,那么就不必对被调用函数进行声明了,直接调用就可以了。
这样的记忆比较清晰一点,我平时编程是将主函数写在最后,前面写被调用函数,这样就避免了忘记写函数声明而编译出错,希望我的解答能够帮助到你,
可能有些不声明也能通过,但效率极低,最好先声明。
1、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
2、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
3、二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
不是,如果你把自定义函数写在主函数前面的话,就是说写在开始的话,就可不用声明了。
否则声明是必需的。
是声明吧,要是函数定义在主函数之后,则要在之前要声明
若函数定义在主函数之前,则不需要声明