一、函数的定义
1、定义格式
返回类型 函数名 (形式参数)
复合语句(函数体)
2、说明
- 函数定义的位置应该在
main
函数前面,C语言是按顺序执行代码的。若定义的函数想要放在main
函数后面,则需要在main
函数前声明。 - 函数可以有返回值。返回类型为
void
(空值)时,该函数没有返回值。 - 函数定义时,函数类型可单独成行。如:
double
average (double a, double b){
return (a+b)/2;
}
- 若函数没有形式参数(parameter),则括号内填写
void
,形参位置处不能空着。(main
函数除外,如int main(void)
与int main()
均合法) - 函数体内声明的变量专属此函数,其他函数不能对其进行检查或修改,即便定义的函数名相同,两变量的存储地址还是不同,不会互相影响。因此,调用函数时,永远只能传值给函数。
举例:
- 带返回值的函数
//函数定义
double average(double a, double b) {
return (a+b)/2; //此函数返回值为(a+b)/2
}
//函数调用
double x,y;
scanf("%lf%lf",&x,&y);
printf("Average of %f and %f is %f\n",x,y,average(x,y) );
- 不带返回值的函数
//函数定义
void average(double a, double b) {
printf("Average of %f and %f is %f\n",a, b, (a+b)/2 );
//没有return语句,无返回
}
//调用
double x,y;
scanf("%lf%lf",&x,&y);
average(x,y);
以上两段代码功能完全相同。
二、函数调用
1、调用格式
函数名(参数值)
2、说明
- 圆括号
()
为必需,即便调用的函数没有参数,也需要写圆括号。 - 若有参数,则需要给出正确的数量和顺序。按顺序依次初始化函数中的参数。
- 调用函数时,永远只能传值给函数(值传递),不能用变量名代替。每个函数有其独有的变量空间,参数也独立,和其他函数没关系,即便函数名相同,也互不影响。
举例:
void swap(int a, int b);
int main(){
int a = 2, b = 6;
swap(a,b);
printf("a = %d, b = %d\n",a,b);
return 0;
}
void swap(int a, int b)
{
int t;
t = a