int max(int a, int b); 是函数申明。就是在主函数引用外部的函数时要进行函数的什么,不然会报错,说这个函数没有定义。如果这个函数写在main函数后面就可以不用申明。如果这个函数写在main前面就一定要申明。申明就把函数定义赋值粘贴就可以了
并没有在主函数再次int max...而是在主函数外定义了一个max函数,实际上开头那个叫做函数声明即函数原型(prototye),只是告诉编译器这里是有max函数的。而后面那个叫做函数的定义或者实现(implement),是函数的工作细节。在C语言里,如果函数的实现在主函数(或者其他函数)调用它之前,就可以省去专门的声明,如果在之后,则必须在主函数(或者其他调用它的函数)之前有一个声明。在C++里则无此必要,但是如果作为一个比较大的项目,好的编程风格是将声明写在.h头文件当中,实现在另一个文件当中,做一个模块化的设计,方便组成自己的函数库。
因为你的函数定义
int max(int a, int b)
{
if (a>b) return a ; else return b;
}
在调用 z=max(x,y);
之后,所以在调用前必须先声明,相当于告诉编译器这个函数你已经定义了,让它去后面找,如果你函数调用在定义之后,调用前有没有声明,则编译将会出错。
楼主是不是学过Java之类的语言呢 ?
Java是不需要再再main()函数中重新声明定义过的方法的。
但是Java和C不同:Java中定义的方法,在整个类中都能访问;而C语言是一个函数一个代码区间,在main()函数外声明的max()函数在main()函数中不再次声明是无效的。
这个是可以的,只要在使用前声明就行