1、一般形式:函数名(实参表列)
若调用无参函数,则“实参表列”可以没有,但括弧不能省略。
若实参表列包含多个实参,则各参数间用逗号隔开,实参与形参个数应相等,类型应匹配。实参与形参按顺序对应,一一传递数据。
注:若实参表列包含多个实参,对实参求值的顺序不是确定的,有的系统按自左至右顺序求实参的值,有的系统按自右向左。
程序:(判断系统是自左向右还是自右向左)
#include <stdafx.h> #include<stdio.h> void main() { int f(int a,int b);/*函数声明*/ int i=2,p; p=f(i,++i); /*函数调用*/ printf("%d ",p); } int f(int a,int b) { int c; if(a>b) { c=1; } else if(a==b) { c=0; } else { c=-1; } return(c); }
若自左向右则相当于f(2,3),若自右向左则相当于f(3,3)。
2、函数的调用方式
按函数在程序中出现的位置来分,可以有以下三种函数调用方式:
(1)函数语句
把函数调用作为一个语句,不要求函数带回值,只要求函数完成一定的操作。
(2)函数表达式
函数出现在一个表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=2*max(a,b);
(3)函数参数
函数调用作为一个函数的实参。
例:m=max(a,max(b,c));
其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。m的值是a,b,c三者中的最大值。
3、被调用函数的声明和函数原型
(1)被调用的函数必须是已经存在的函数。
(2)若使用库函数,还应在本文件开头用#include命令将调用有关库函数时所需要用到的信息“包含”到本文件中来。
(3)若使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的后面,应在主调函数中对被调函数作声明。
4、关键词
声明:声明一词原为delaration,过去译为“说明”。
声明的作用:把函数名和函数参数的个数,以及参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查调用是否合法。(不占内存)
函数的定义:是指对函数功能的确立,是一个完整的,独立的函数单位(占内存)。
注:区分函数的声明与定义。
例:
#include <stdafx.h> #include<stdio.h> void main() { float add(float x,float y); float a,b,c; scanf("%f,%f",&a,&b); c=add(a,b); printf("sum is %f ",c); } float add(float x,float y) { float z; z=x+y; return z; }
注:若被调用函数定义出现在主调函数之前,可以不必加以声明,因为编译器已先知道了已定义函数的有关情况,会根据函数首部提供的有关信息对函数的调用作正确性检查。