c语言程序设计---函数ppt课件_第1页
c语言程序设计---函数ppt课件_第2页
c语言程序设计---函数ppt课件_第3页
c语言程序设计---函数ppt课件_第4页
c语言程序设计---函数ppt课件_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

语言程序设计第八章函数 2004一、函数概述 一个 C程序,由一个主函数和若干其它函数组成,它们之间的关系是: 主函数 (main函数 )可以调用其它函数,其它函数可相互调用。 函数 :完成特定功能的程序段,通常由用户定义或系统定义 各函数可存放在一个文件中,也可以存放在不同的文件中。 函数之间的调用,有三种方法:常 规 、 工程 和 文件 包含三种后两种方法自学常 规 方法: 各函数包含在一个文件中例 :p1( )printf (“* n” ); p2( ) printf (“_ _ _ _ _How_do_you_do!n”) ;main( )p1( ); p2( ); p1( ); 说 明: ( 1) 编译 的 单 位是文件而不是函数; ( 2)一个完整的程序可由若干个文件 组 成,可用 工程 或文件包含 的方法 对 其 编译 ; ( 3) C执 行 总 是从 main函数开始 执 行, 调 用其它函数后又返回到 main函数; ( 4) 函数定 义 是独立的、平等的,不能 嵌套定 义 但可相互 调 用; ( 5)函数的 类 型 : 标 准 库 函数,由系 统 提供,用 户 直接使用 用 户 定 义 的函数 ( 6) 函数的形式 : 无参函数 主 调 函数无数据 传 送 给 被 调 函数 ,可 带 或不 带 返回 值 . 有参函数 主 调 函数与被 调 函数 间 有参数 传递 ,主调 函数可将 实 参 传 送 给 被 调 函数的形参 ,被 调 函数的数据可返回主 调 函数。 二、函数定义的一般形式1、 无参函数的定 义 形式: 类 型 标识 符 函数名( ) 声明部分 语 句return 返回值 2、 有参函数的定 义 形式: 类 型 标识 符 函数名( 形式参数表列 ) 声明部分 语 句 return 返回值例: int max(int x,int y) int z; z= xy ? x : y ; return(z) ; 例: dummi( ) 3、 空函数的定 义 形式 类 型 说 明符 函数名( ) 空函数不作任何操作,但是合法,它 对调试 程序或以后在此 处补 充完整的函数体是有作用的。4、 对 形参声明的 传统 方式 传统 方式中,形参 类 型 说 明在函数定 义 的第 2行 以 下 两种定 义 形式在 Turbo C中都 认 可,推荐使用二种方式,一方面兼容 C+模式,另一方面直观。 传统 形参声明形式 :int max(x,y) int x,y; int z; z=xy ?x:y; return(z); 新版本形参声明形式 :int max(int x, int y) int z; z=xy ?x:y; return(z); 三、函数参数和函数的值 1、形式参数和 实际 参数 实际 参数 : 简 称 实 参,主 调 函数中提供的数据。 可以是常量、 变 量、表达式等,是具体的数 值 。 形式参数: 简 称形参,被 调 函数中用以接收主 调 函数数据的 变 量。 被 调 用函数名后面括号内的若干 变 量名。 例 调 用函数 时 的数据 传递main( ) int a, b, c; scanf(%d%d”, c=max(a, b); 实 参printf (“Max is %d n”, c); max (int x, int y) 形参 int z; z=xy ? x : y ; return(z); 输 入:-100 200输出:Max is 200 关于形、 实 参的 说 明:1.形参只有在函数 调 用 时 才分配存 储单 元, 调 用 结 束后, 释 放所分配的 单 元 ; 2.实 参可以是常量、 变 量、表达式, 总 之 要有确定的 值 ,当函数 调 用 时 ,将 实 参的 值传递给 形参,若是数 组 名, 则传 送的是数 组 的首地址。 3.被 调 函数中,形参 类 型必 须 指定,以便分配存 储单 元。 4.实 参、形参的数据 类 型一致 , 赋值 要兼容, 顺 序要一致。 5.若被 调 函数 类 型 为 非整形,要在主 调 函数中 对 被 调 函数作原形声明或在主 调 函数之前定 义 。 6.实 参 对 形参的数据 传 送是 值传 送,也是 单 向 传 送 ,当被 调 函数的形参 发 生 变 化 时 ,并不改 变 主 调 函数 实 参的 值 。 例 形、 实 参占据的是不同的存 储单元 main( ) int a=2,b=3; printf (“a=%d, b=%d n”,a, b); printf(“ add(a,b); printf(“a=%d,b=%dn”, a,b); printf(“ add(int x,int y) x=x+8; y=y+12; printf(“x=%d,y=%d n”,x,y); printf(“ 2、函数的返回 值调 用一个函数一般都希望返回一个确定的 值 。 有关函数 值 的几点 说 明: 1).若需要返回 值则 用 return语 句 ; 2).被 调 函数中可用多个 return语 句, 执 行哪一个由程序执 行情况来定。 例:函数中有如下 语 句 if(ab) return(a); else return(b); 3).return后面的括号可省,如: return a;4).return 后的 值 可以是一个表达式,如: return(x y ? x : y); 5).函数 (返回 )值 的 类 型是在定 义 函数 时 指定的 如:int max(x, y) float min(a,b) double abc(d1,d2) 注意: (1)函数定 义时 ,函数名的括号后无 “ ; ” ; (2)未加 类 型 说 明的函数自 动 按整型 处 理; (3)定 义 函数 时 ,函数 值 的 类 型一般与 return 后面表达式的 类 型一致,若不一致, 则 以函数 值为 准。例 函数 值类 型 为 整型,而返回 值 的 类 型是 实 型,最后以整型 值 返回。 main( ) int max(float,float); float a, b; int c; scanf(“%f%f”, c=max(a, b); printf(“max is %d n”,c) ; max(float x, float y) float z; z=xy ? x : y; return(z); 输 入: 1. 5 2. 5 输 出: max is 2 6).函数中无 return 语 句 时 ,可能返回一个不确定或无用的 值 例 main( ) int a, b, c; a=p1( ); b=p2( ); c=p1( );printf(“a=%d,b=%d,c=%d n”,a, b, c); p1( ) printf(“* n”); p2( ) printf(“ I am happy! n”); 运行 结 果:* I am happy! * a=6,b=12,c=6 7).为明确表示不带返回值,可用 void( 无值,空类型)定义函数。 例 void p1( ) printf(“* n”); void p2( ) printf(“I am happy! n”); main( ) int a,b,c; a=p1( ); b=p2( ); c=p1( ); printf(“a=%d, b=%d, c=%d n”,a, b, c); 编译时指出: Type mismatch in redeclartion of p1 , p2意即:在定义函数 p1, p2 时类型不匹配四、函数的调用主调函数:主动去调用其它函数 被调函数:被其它函数所调用 1、函数调用的一般形式 函数名(实参表列) 操作:把控制和实参传送给被调函数,当无参时,实参表列为空,但( )不能省。 函数名:确定已存在的被调用的函数; 实参表列:有确定值的数据,当有多个实参时,实参间用 “ , ” 分隔,形实参个数要相等,类型要一致, 实参求值顺序在 Turbo C中是从右向左。 (参阅前面内容 ) 例 实 参求 值顺 序从右向左 main( ) int i=2, p; p=f(i, +i); printf(“p=%d, i=%d n”,p, i); 实 参求 值顺 序在 Turbo C中是从右向左int f(int a, int b) int c; if(ab) c=1; else if(a=b) c=0; else c=-1; return (c); 运行 结 果:p=0, i=3 若将参数改 为f(i,i+), 则结 果为 : p=1, i=32、 函数的 调 用方法 1).函数 语 句:以独立的 语 句去 调 用函数;如: f1( ); 2).函数表达式:函数 调 用出 现 在表达式中,要求函数返回一个确定 值 ,以参加表达式的运算,如:c=max(a+b) + min(c,d); 3).函数参数:函数 调 用作 为 另一个函数的参数,如:m=max(a,max(b,c);3、 对 被 调 用函数的声明和函数原型 被 调 用函数 应 具 备 的条件: 1).被 调 函数必 须 存在( 标 准或用 户 定 义 ),如不在同一文件中,可用工程或文件包含的方法将各被 调 用函数 连接起来。 2).若使用 库 函数, 应 在文件开 头 用 #include命令将 调 用库 函数 时 用到的宏定 义 信息包含到本文件中来。 如: #include “ stdio.h” #include “math.h”3).若主 调 和被 调 函数在同一文件中,一般 应 在主 调 函数中 对 被 调 函数的 类 型作声明 形式: 类 型 标识 符 被 调 用函数名( 类 型 形参 . );例 在主 调 函数中, 对 被 调 函数的数据 类 型 进 行 说 明 main( ) float add( float x,float y ); /*声明:函数 类 型、名,形参 类 型、 */ float a, b, c; /*个数,通知 编译 系 统 */ scanf(%f%f”, c=add(a, b); printf(“sum is %f n”, c); float add(float x,float y) /*定 义 :功能的确定,完整独立的 单 位 */ float z; z=x+y ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论