//举例说明
#include <stdio.h>
int max(int *a, int m, int n);//这行就是函数原型,函数定义在主函数后面。
//函数原型的就是实现函数先(main中调用),
//后(定义在后面)。
int main(int argc, char *argc[])
{
int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
printf("max=%d\n", max(&a[0][0], 3, 4));
return 0;
}
int max(int *a, int m, int n)
{
int ma = a[0], i, j;
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
{
if (ma < a[i * n + j])
{
ma = a[i * n + j];
}
}
return ma;
}
一个函数,可能在别处被引用,或是在本文件中被引用。其中在本文件中被引用时,规范的函数书写格式是先写main函数,然后在main函数下方写被调用的函数,即先引用而后面才有函数定义。此时编译器需要先行知道这个函数返回值类型和参数类型,才可以正确地帮着做严格的数据类型和参数个数的检查 (如不提前声明就会当做是返回int型,参数都当int型且不能检查参数个数),这个函数在定义之前被提前声明了一下函数形式,就是所谓的函数原型了,函数原型中,变量名是可以省略的。
或者说:
函数原型就是函数本身定义的形式。
函数的格式为:
return_type func_name(arg_list);
所以函数的原型,就是根据函数名查找到的声明或者定义的形式,通过原型可以确认函数的返回值类型(return_type),以及需要多少个参数,每个参数的类型是什么(arg_list)。
这样才能够确定,如何调用函数才是正确的。