计算机教程
本文由445803550贡献
ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
第七章 函数
§7.1 概述
C程序由一个main和任意个函数组成。 1) 除main外, 其它为系统函数、自编函数, 系统函数:由系统提供,用户可调用。 自编函数:由用户按语法规则编写。 2) 除main函数外,其它函数可相互调用 main ( ) a d b ? c x z
3)函数不可嵌套定义,具有全局性、平行性, 4)函数分为有参与无参函数 5)程序从main开始执行,最后又回到main函 数结束。
§7.2 定义与调用
1. 无参函数 定义形式 类型标识符 函数名( ) { 说明部分 语句 } 类型标识符: 表示返回值类型。
例101. 通过调用printstar( ), print_ message( )而显示: ************ How do you do! ************ 就是无参函数 调用方式 若有返回值可出 现在表达式中 函数名( ) ; 无返值可单独出 现
2. 有参函数 定义形式 类型标识符 函数名(形参表列) 形参说明 { 说明部分 语句 }
例: 求二数之最大值 int max (x, y) int x, y; {int z; z=x>y? x:y; return (z); } 出现return, 语句,返回值一般与函数类型一致.
调用方式 函数名(实参表列); 无值返回: 有值返回:
3. 形参与实参 实参: 出现在调用函数中, 形参: 出现被调用函数中。 单向 调用时: 实参值 传递
形参。
函数被调用时,临时分配单元给形参,调用完 毕, 这些单元被释放。 注: 实参可为表达式,其值传递。 实参、形参类型一致。 可在形参表列中对形参说明。 4. 函数返回值 return (表达式); 变量等 由函数名只能得到一个返回值。 通过return语句将返回值传给函数名,可有多 return , 个return. 返回值类型为函数类型。 一般return中的返 回值类型应与函数定义时的类型一致, 不一致时, 以函数定义类型为准。
5. 调用函数应对被调用函数的返回值类型作出说 明:(函数名相当于一变量,但应有所区别) 类型符 函数名( ); 它不同于函数的定义(功能定义) 例: 求二实数之和 main ( ) { float add( ); float a, b, c; scanf("%f, %f",&a, &b); c=add(a, b);
printf (“sdfgghh%f”,c); } float add( float x, float y) { float z; z=x+y; return z; } 以下几种情况可省略对被调函数的说明: 当返回值为整型、字符型。 在调用之前定义函数。 在整个文件的开头定义函数。
? ? ? ? ? ? ? ?
float add( float x, float y) { float z; z=x+y; return z; } main ( ) { float add( ); float a, b, c; scanf("%f, %f",&a, &b); ? c=add(a, b); printf (“sum=%f”,c); ? } ?
6. 实参传递给形参时,实参的计算有的系统自左至 右,有的自右至左。
7. 调用系统函数, 需根据系统提供的手册而确定是 否要加上预编译命令,如:getchar ( )需加 #include
§7.3 嵌套调用
函数不能嵌套定义,但可嵌套调用 main { ↓ 调用a ↓ } a( ) {? 调用b ? } } b( ) {
例: 用弦截法求方程的根。 x3–5x2+16x–80=0 方法如下: (1) 取两个不同点x1、x2,如果f(x1)和f(x2)符号相反, 则(x1,x2)区间内必有一个根。如果f (x1)与f (x2)同 符号,则应改变x1、x2,直到f (x1)、f (x2)异号为 止。注意x1、x2的值不应差太大,以保证(x1, x2) 区间只有一根。
(2) 连接f(x1)和f(x2)两点,此线(即弦)交x轴于x,见 图7.6. y f(x2) x点坐标