C语言程序设计第八章函数
第八章 函数1. 概述 2. 函数的定义
3. 函数的返回值4. 函数的调用 5. 函数参数及其传递方式 6. 函数的嵌套与递归调用 7. 数组作为函数参数 8. 变量的存储属性
第八章 函数1. 概述 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高软件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之
第八章 函数1. 概述 C是模块化程序设计语言C程序
源程序文件1
源程序文件i
源程序文件n
预编译命令
函数1
函数n
说明部分
执行部分
C程序结构
C是函数式语言
函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件
2. 函数的定义 一般格式现代风格:
函数返回值类型 缺省int型 无返回值void
合法标识符
函数类型 函数名(形参类型说明表) { 说明部分 语句部分 } 例 例 有参函数(现代风格) 例 有参函数(现代风格) 无参函数 例 ) intint max(int y) y) max(int x, x,int printstar( 空函数 dummy( ) { {intint z; z; { printf(“**********\n”); } { } 或 z=x>y?x:y; z=x>y?x:y; return(z); printstar(void ) return(z); 函数体为空 } } { printf(“**********\n”); }
函数体
传统风格:
函数类型 函数名(形参表) 形参类型说明 { 说明部分 语句部分 }
例 有参函数(传统风格) int max(x,y) int x,y; { int z; z=x>y?x:y; return(z); }
3.
例 无返回值函数 函数的返回值 void swap(int x,int y ) 返回语句 { int temp; temp=x; 形式: return(表达式); x=y; 或 return 表达式; y=temp; 功能:使程序控制从被调用函数返回到调用函数中, 同时把返值带给调用函数 } 说明: 函数中可有多个return语句 若无return语句,遇}时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一 致,按前者为准,自动转换------函数调用转换 void型函数
例 函数带回不确定值printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); }输出:
void printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); }编译错误!
********** 10
例 函数返回值类型转换main() { int max(float x,float y); float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max(float x, float y) { float z; z=x>y?x:y; return(z); /*返回整型*/ }
4. 函数的调用 调用形式 函数名(实
参表);
max(float x, float y) { 形参 … }
函数定义(被调函数)
main() { … c= max(a,b) ; … 实参 }
函数调用(主调函数)
说明: 实参与形参个数相等,类型一致,按顺序一一对应 实参表求值顺序,因系统而定 (Turbo C、VC++ 自右向左)
例 参数求值顺序#include <stdio.h> main() { int i=2,p; /*3,3*/ 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); }运行结果:0 #include <stdio.h> main() { int i=2,p; (VC++下, 2,2) p=f(i, i++); printf("%d",p);(TC下, 3,2 ) } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 运行结果:0 运行结果: 1(VC++下) (TC下)
调用方式 函数语句: 例 printstar(); 函数表达式: 例 m=max(a,b)*2; 函数参数: 例 printf(“%d”,max(a,b)); m=max(a,max(b,c));
函数声明 作用:告诉编译系统函数类型、参数个数 及类型,以便检验。
函数声明 一般形式:函数类型 函数名(形参类型 [形参名],….. ) 或 函数类型 函数名(); 函数定义与函数声明不同 函数声明位置:程序的数据说明部分 (函数内或外)
例main() { int max(float,float); /*函数声明*/ float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); /*函数调用*/ printf("Max is %d\n",c); } max(float x, float y) /*函数定义*/ { float z; z=x>y?x:y; return(z); }
函数声明 对被调用函数要求: 必须是已存在的函数 库函数: #include <*.h> 用户自定义函数: 函数类型声明 下列情况下,可不作函数声明 若函数返回值是char或int型,系统自动按int 型处理 被调用函数定义出现在主调函数之前 有些系统(如Borland C++)要求函数声明指出 函数返回值类型和形参类型,并且对void 和 int 型函数也要进行函数声明
例 函数声明举例main() add(float x, float y) float main() { floatfloat z; { {add(float,float); /*function declaration*/ float a,b; float a,b,c; float add(); z=x+y; int c; scanf("%f,%f",&a,&b); return(z); scanf("%f,%f",&a,&b); c=add(a,b); 被调函数出现在主调函数 } c=max(a,b); 数之前,不必函数声明 printf("sum is %f",c); main() printf("Max is %d\n",c); } { float a,b,c; } int型函数可不作函数声 float add(float x, float y) scanf("%f,%f",&a,&b); 明 max(float x, float y) { float z; ( 有些编译系统不行) c=add(a,b); { float z; z=x+y; printf("sum is %f",c); z=x>y?x:y; return(z); } return(z); } }
…… 此处隐藏:1466字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [教学研究]2012西拉科学校团少队工作总结
- [教学研究]建筑工程公司档案管理制度
- [教学研究]小学数学人教版六年级上册圆的周长和面
- [教学研究]ERP电子行业解决方案
- [教学研究]钢支撑租赁合同范本
- [教学研究]预应力自动张拉系统用户手册Rev1.0
- [教学研究]MOOC课程:金瓶梅人物写真(每章节课后
- [教学研究]追加被执行人申请书(适用追加夫妻关系)
- [教学研究]2014年驾考科目一考试最新题库766
- [教学研究]2013-2014学年度九年级物理第15章《电
- [教学研究]新版中日交流标准日本语初级下26课-客
- [教学研究]小导管注浆施工作业指导书
- [教学研究]一般财务人员能力及人岗匹配评估表
- [教学研究]打1.2.页 小学一年级暑假口算100以内加
- [教学研究]学习贯彻《中国共产党党和国家机关基层
- [教学研究]2012年呼和浩特市中考试卷_35412
- [教学研究]最简易的电线电缆购销合同范本
- [教学研究]如何开展安全标准化建设
- [教学研究]工作分析与人岗匹配
- [教学研究]2016-2017学年高中历史第七单元现代中
- 山东省义务教育必修地方课程小学三年级
- 台湾宜兰大学互联网交换技术课程 01_In
- 思想品德:第一课《我知我家》课件(人
- SAR合成孔径雷达图像点目标仿真报告(附
- 利辛县“十三五”规划研究报告
- 2015-2020年中国手机APP行业市场发展趋
- 广告策略、创意表现、媒体方案
- 企业如何申请专利的的几点思考
- 《中国教育简史》网上作业
- 高中历史第二单元西方人文精神的起源及
- 年终晚会必备_精彩的主持稿_精心整理_
- 信息工程专业自荐书
- 2019高考历史人教版一轮练习:第十二单
- JAVA俱乐部管理系统软件需求规格说明书
- 2016-2021年中国小型板料折弯机行业市
- (人教新课标)六上_比的基本性质课件PPT
- 辽宁省公务员考试网申论备考技巧:名言
- 神经阻滞麻醉知情同意书
- 施工企业信息填报、审核和发布的相关事
- 初一(七年级)英语完形填空100篇




