一、函数调用
函数在定义完后就可以被调用了。
如果函数定义中有形参,那么在调用时,应传递实际参数(实参)。
函数调用的一般形式如下:
函数名(实参列表)
int main( )
{ int n;
for (n=301; n<=499; n++)
if (prime(n)==1)
printf ("%5d",n) ;
printf("\n");
return 0;
}
若调用无参函数,则没有实参列表,但小括号不能省略。
若实参列表包含多个实参,则各参数间用逗号隔开。
实参与形参的个数应相等,类型应一致。
实参与形参应按顺序一一对应,实参传递数据给形参。
二、函数的调用方式
按函数在程序中出现的位置来划分,函数调用方式可以有3种。
(1) 函数语句。把函数调用作为一个语句,
例如:“fun(ch);”,这时无需函数返回值,只是要求函数完成一定的操作。
(2) 函数表达式。函数调用出现在表达式中。
例如:“sum=sum+fnum(k);”,函数调用“fnum(k)”出现在表达式中,这时要求函数返回一个值参加表达式的运算。
(3) 函数的参数。函数调用作为另一个函数的实参。
例如:putchar(getchar())。
三、对被调用函数的声明
一个函数在被调用之前必须已被定义,此外还应该在调用之前对函数进行声明。
声明就是向编译系统声明将调用的函数的相关信息
如果在调用函数之前未进行声明,则编译系统认为此函数不存在,从而导致编译出错。
四、函数调用需要具备的条件
(1) 被调用函数必须是已经存在的函数(库函数或用户自定义函数)。
(2) 若调用库函数,一般在文件开头使用#include命令将库函数所在文件包含进来。
(3) 若使用用户自定义的函数,而且该函数与调用它的函数在同一个文件中,一般还应该在调用它的函数中或主函数之前对被调用的函数进行声明。
五、函数声明的一般形式如下:
类型标识符 被调用函数的函数名(参数类型1, 参数类型2, …);
类型标识符 被调用函数的函数名(参数类型1 参数名1, 参数类型2 参数名2, …);
上面两种函数声明的形式均可。前一种为基本形式。声明的后一种形式,加上了参数名,这样便于阅读程序。
六、函数调用的过程如下:
(1) 传递参数值。调用有参函数时,首先计算各个实参表达式的值、为所有的形参分配内存单元,然后按顺序把实参的值传递给对应的形参。
(2) 进入函数的声明部分。执行声明部分,为函数体内的局部变量分配内存单元。
(3) 执行函数中的语句,实现函数的功能。按顺序执行函数的语句,当遇到return语句或最外层的“}”时,释放形参和本函数体内定义的局部变量所占用的内存空间,返回到调用本函数的上级函数。

