第8章函数与变量
C语言的基础教程,适合初学者!
第8章 函数与变量 章 函数的定义 函数的参数和返回值 函数的声明和调用 函数的递归调用 外部函数与内部函数 变量的作用域和存储类型
C语言的基础教程,适合初学者!
8.1 函数
C语言提供的标准库中存放着若干已定义的函 如常用的printf() scanf()、fabs()、 printf()、 数,如常用的printf()、scanf()、fabs()、 sqrt()等函数 在使用这些库函数时, 等函数, sqrt()等函数,在使用这些库函数时,需要使 用文件包含命令(#include) 用文件包含命令(#include)将带有该函数定 义的头文件包含到当前C程序中; 义的头文件包含到当前C程序中; 对于标准库函数中没有提供的函数常常需要 用户编写自定义函数来实现诸多应用功能。 用户编写自定义函数来实现诸多应用功能。
C语言的基础教程,适合初学者!
8.1.1 函数的定义函数的定义形式有两种:经典C函数定义和标准C函 函数的定义形式有两种: 经典C函数定义和标准C 数定义。 中使用两种定义形式均可。 数定义。在Turbo C中使用两种定义形式均可。 经典C中函数定义的一般形式是: 经典C中函数定义的一般形式是: 函数名(形参表列) 函数类型 函数名(形参表列) 形参说明 { 声明部分 执行部分 }
C语言的基础教程,适合初学者!
8.1.1 函数的定义标准C 又提供了另一种形式的函数定义——函数原型 标准 C 又提供了另一种形式的函数定义 函数原型 定义,即将形参表列和形参说明和并在一起, 定义 , 即将形参表列和形参说明和并在一起 , 放在函 数名后面的括号中,其一般形式为: 数名后面的括号中,其一般形式为:函数类型 函数名(类型 形参1,类型 形参2,…,类型 形参n) 函数名( 形参1 形参2 形参n) { 声明部分 执行部分 } 其中第一行构成函数头,下面用花括弧括起来的部分构成函数体。 其中第一行构成函数头,下面用花括弧括起来的部分构成函数体。
C语言的基础教程,适合初学者!
8.1.2 函数的参数和返回值1 函数的参数 由前述可知,定义函数时的参数为形参, 由前述可知,定义函数时的参数为形参,调 用函数时的参数为实参。 用函数时的参数为实参。 形参和实参不同: 形参和实参不同: 当函数未被调用时, 当函数未被调用时 , 形参只是形式上的参 不占内存也无确定值。 数,不占内存也无确定值。只有 当函数被调用时,形参才被分配内存单元, 当函数被调用时,形参才被分配内存单元, 接收传递来的实参值; 接收传递来的实参值;
C语言的基础教程,适合初学者!
8.1.2 函数的参数和返回值2.函数的返回值 函数返回值的取得是通过在被调函数中设 return语句得到的 语句得到的, 置return语句得到的, 其格式一般为: 其格式一般为: return(<表达式>); 表达式>) return(<表达式>); return语句的执行过程是 先计算return 语句的执行过程是: return
语句的执行过程是:先计算return 后括号内表达式的值, 后括号内表达式的值,再将计算结果返回给主 调函数。 调函数。
C语言的基础教程,适合初学者!
8.1.3 函数的声明和调用1 函数声明 一个函数调用另一个函数必须具备的前提是: 一个函数调用另一个函数必须具备的前提是: 被调函数已存在,也就是说, ⑴ 被调函数已存在 , 也就是说 , 被调函数的定义已 经存在。该被调函数可以是库函数, 经存在。该被调函数可以是库函数,也可以是用户 自定义的函数。 自定义的函数。 ⑵ 对于库函数,调用前要在主调函数所在的源文件 对于库函数, 中用#include命令包含相应的头文件( #include命令包含相应的头文件 中用#include命令包含相应的头文件(即包含有该 库函数的定义的文件) 对于自定义函数, 库函数的定义的文件);对于自定义函数,要在主 调函数中对其进行声明。 调函数中对其进行声明。
C语言的基础教程,适合初学者!
8.1.3 函数的声明和调用2.函数调用 函数调用即主调函数通过传递某些信息来使用被 调函数的功能。 调函数的功能。 函数调用的一般格式是: 函数调用的一般格式是: 函数名(实参表列) 函数名(实参表列); 其中,圆括弧内实参的个数、 其中,圆括弧内实参的个数、出现的顺序必须与 函数定义中的形参保持一致, 函数定义中的形参保持一致,实参类型一般也 应与形参表列对应相同,实参之间用逗号隔开。 应与形参表列对应相同,实参之间用逗号隔开。
C语言的基础教程,适合初学者!
函数调用过程
C语言的基础教程,适合初学者!
函数嵌套调用执行顺序
C语言的基础教程,适合初学者!
例8.9弦截法解方程的思想如图8.5所示。 弦截法解方程的思想如图8.5所示。 8.5所示
C语言的基础教程,适合初学者!
程序算法N 流程图如图8.6所示。 程序算法N-S流程图如图8.6所示。 8.6所示
图8.6 弦截法解方程N-S图
C语言的基础教程,适合初学者!
源程序如下: 源程序如下:"math. #include "math.h" float f(float x) { float y; y=((x)*x+16 )*x-80. 16. y=((x-5.0)*x+16.0)*x-80.0; return(y); return(y); } float xpoint(float x1,float x2) { float y; y=(x1*f(x2 *f(x1))/(f(x2 f(x1)); y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); return(y); return(y); }
C语言的基础教程,适合初学者!
float root(float x1,float x2) { float x0,y0,y1; ,y0,y1 =f(x1 y1=f(x1); do{x0=xpoint(x1,x2 do{x0=xpoint(x1,x2); =f(x0 y0=f(x0); (y0*y1 {y1=y0 =x0 if (y0*y1>0) {y1=y0;x1=x0;} =x0 else x2=x0; }while(fabs(y0)>=1 }while(fabs(y0)>=1e-6); return(x0 return(x0); } main() ,x2,f1,f2,x0 {float x1,x2,f1,f2,x0; do{printf("Input x1,x2: "); ,x2 "); scanf("%f,%f",&x1,&x2 scanf("%f,%f",&x1,&x2); =f(x1 f1=f(x1); =f(x2 f2=f(x2); }while(f1*f2>=0 }while(f1*f2>=0); =root(x1,x2 x0=root(x1,x2); printf("A root of equation is %8.4f",x0); f",x0
}
C语言的基础教程,适合初学者!
程序运行如图8.7所示。 程序运行如图8.7所示。 8.7所示
C语言的基础教程,适合初学者!
8.1.4 函数的递归调用递归调用有直接递归和间接递归两种调用 方式,其调用示意图如图8.9所示。 8.9所示 方式,其调用
示意图如图8.9所示。
…… 此处隐藏:1409字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [行业范文]美好的法语句子
- [行业范文]描写露珠的句子
- [行业范文]精彩禅语句子图片
- [行业范文]关于满嘴谎言的句子
- [行业范文]关于安静的句子48句
- [行业范文]关于小河的句子
- [行业范文]描写稻田的句子
- [行业范文]思念好朋友的句子
- [行业范文]赞美雪的句子
- [行业范文]早上激励人心的句子
- [行业范文]失恋忧伤的句子
- [行业范文]努力积极向上的句子
- [行业范文]对工作心灰意冷的句子
- [行业范文]失恋让人心疼的句子
- [行业范文]描写珍惜青春的句子
- [行业范文]表达思念的句子简短
- [行业范文]关于父爱的句子范例
- [行业范文]浪漫的英语句子
- [行业范文]关于周末的句子
- [行业范文]思念牵挂的句子
- 有关感恩班会课件简短(二篇)(感恩班会
- 2025年初二下乡军训心得体会800字(15篇
- 关于新员工培训方案汇编(关于新员工培
- 精选高考生寒假学习计划书(精)(高考生
- 毕业实训报告心得体会(3篇)(实训报告心
- 银行工作感悟及心得范文怎么写(四篇)(
- 精选领导干部个人政治画像报告通用(七
- 精选超市11.11活动促销方案(精品超市品
- 2025年怎么做自我介绍汇总(5篇)(至2025
- 最新企业错峰生产方案(26篇)(山西企业
- 最新暑期三下乡社会实践调研报告范本(
- 最新幼儿园大班教育教学总结怎么写(最
- 最新教师节主持词小学(优秀9篇)(教师节
- 关于小学安全教育教学方案(推荐)(关于
- 员工信模板范文怎么写(五篇)(员工信息
- 最新保险销售离职申请书(十六篇)(最新
- 最新XX小学防校园欺凌工作方案怎么写(2
- 有关特岗教师辞职信范文(推荐)(特岗教
- 精选党的建设工作要点简短(党的建设的
- 如何写安康杯竞赛活动总结汇总(4篇)(安




