第七章 函数概述
1) 除 main外,其它为库函数、自编函数,
库函数:由系统提供,用户可调用。
自编函数:由用户按语法规则编写。
C程序由一个 main和任意个其它函数组成。
2) 除 main函数 外,其它函数可相互调用
main ( )
a b c
d x z
3)函数不可嵌套定义,具有全局性、平行性,
4)函数分为有参与无参函数
5)程序从 main开始执行,最后又回到 main函数结束。
§ 7.1 库函数必须以 #号 开头,文件名用,,
或 〈 〉 括起来,include命令后 不能加 ;
附录五 p256列出了常用库函数
1.调用 C标准库函数的 include命令一般调用形式:
函数名(参数表)
出现在表达式中:
例,y=pow(x,2.5)+1.3;
作为独立语句:
例,printf(“*****\n”);
2.标准库函数的调用
§ 7.2 函数的定义和返回值例子类型标识符 函数名 ( )
{ 说明部分语句
}
类型标识符,表示返回值类型。
1,无参函数
定义形式
调用方式函数名 ( ) ;
若有返回值可出现在表达式中无返值可以以语句单独出现例 1,通过调用 printstar( ),print_ message( )而显示,
* * * * * * * * * * * *
How do you do!
* * * * * * * * * * * *
就是无参函数类型标识符 函数名 (类型名 形参 1,
类型名 形参 2,……)
{ 说明部分语句
}
2,有参函数
( 1) 定义形式(新标准)
类型标识符 函数名 (形参表列 )
形参说明
{ 说明部分语句
}
2,有参函数
( 2) 定义形式 (老版本)
新标准兼容老版本定义形式
② 函数名和形参定义符合用户标识符规定,
函数名在同一程序必须唯一,形参名在同一函数唯一即可。
③ 函数定义不能嵌套。
④ 缺省函数首部的函数返回值类型名,则默认为 int类型。
( 3) 函数定义注意事项:
例,求二数之最大值
int max (int x,int y)
{ int z;
z=x>y? x:y;
return (z);
}
该函数也可以写成以下形式:
int max (x,y)
int x,y;
{ int z;
z=x>y? x:y;
return (z);
}
3.函数的返回值出现 return 语句,返回值一般与函数类型一致,由函数名只能得到一个返回值。
( 1)形式:
return 表达式;
return (表达式);
retrun ;
注意:
( 1)表达式值的类型必须与函数首部说明类型一致,
否则以函数值类型为准,系统自动转换。
( 2)程序执行到 return语句,退出调用函数,带回返回值。
( 3)同一函数,可多处出现 return语句。
( 4) return;表示退出调用函数,没有确定返回值。
( 5)没有 return语句,执行到函数末尾,退出调用函数,没有确定返回值。
1,调用方式函数名 (实参表列 ); 或 函数名 ();
无值返回,
有值返回,
§ 7.3 函数的调用函数名 ( ) ;
若有返回值可出现在表达式中无返值可以语句单独出现例 2,double add(double a,double b)
{ double s;
s=a+b;
return s;
}
dummy() { }
main()
{ ……
x=add(3.0,4.0);
for(y=0,i=1;i<=5;i++) y=add(y,i);
dummy(); ……
}
注意:
( 1)调用函数时,函数名不能有错。
( 2)实参和形参要一一对应,个数一致,类型匹配。
( 3)函数必须先定义,后调用,除非函数返回值类型为 int或 char。
( 4)函数可以自己调用自己,即递归调用。
§ 7.4 函数的说明例,double add(double,double);
1.函数说明的形式类型名 函数名(参数类型 1,参数类型 2,…… )
2.函数说明的位置可放在所有函数外部,在此后的所有位置上都可以调用该函数。
也可放在某函数内的说明部分,则只有在某函数内能识别该函数。
5,调用函数应对被调用函数的返回值类型作出说明,(函数名相当于一变量,但应有所区别 )
例,求二实数之和
main ( )
{ float add(float,float );
float a,b,c;
scanf("%f,%f",&a,&b);
c=add(a,b);
类型符 函数名 ( );
它不同于函数的定义 (功能定义 )
printf ("sum= %f“,c);
}
float add( float x,float y)
{ float z;
z=x+y;
return z;
}
以下几种情况可省略对被调函数的说明:
当返回值为整型、字符型。
在调用之前定义函数。
在整个文件的开头定义函数。
§ 7.5 调用函数和被调用函数之间的数据传递
2.通过 return语句把函数值返回调用函数
1,实参和形参之间进行数据传递传递数据的三种方式:
3.通过全局变量形参与实参调用时,实参值 单向传递 形参。
函数被调用时,临时分配单元给形参,调用完毕,
这些单元被释放。
注,?实参可为表达式,其值传递。
实参,出现在调用函数中,形参,出现被调用函数中。
实参、形参类型一致。
可在形参表列中对形参说明。
实参传递给形参时,实参的计算有的系统自左至右,有的自右至左。
调用系统函数,需根据系统提供的手册而确定是否要加上预编译命令,
如,getchar ( )需加 include "stdio.h "