1 / 24
文档名称:

上讲内容回顾函数间的参数传递函数的嵌套调用和递归调用.ppt

格式:ppt   大小:164KB   页数:24
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

上讲内容回顾函数间的参数传递函数的嵌套调用和递归调用.ppt

上传人:kunpengchaoyue 2018/6/13 文件大小:164 KB

下载得到文件列表

上讲内容回顾函数间的参数传递函数的嵌套调用和递归调用.ppt

相关文档

文档介绍

文档介绍:上讲内容回顾
函数间的参数传递 函数的嵌套调用和递归调用
第五章3
1
研究式学习—C程序设计(第五章)
第五章3
本讲内容
变量的作用域
变量的存储类型
编译预处理
2
研究式学习—C程序设计(第五章)
变量的作用域
main()
{float r,area;
printf(“r=?”);
scanf(“%f”,&r);
area=carea(r);
printf(“r=%,carae=%,cl=%\n”,r,area,cl);
}
程序运行结果:
r=?3
r= ,carae=,c1=
问题:写一个函数,送入圆
的半径后,得到圆的面积
及周长。
return语句只能返回一
个值,要返回多个值,要用
全局变量。
float cl;/*定义全局变量c1*/
float carea(float r)
{float ar;
ar=*r*r;
cl=2**r;
return ar; }
3
研究式学习—C程序设计(第五章)
float f1(int a) /*定义f1函数*/
{int b,c;
…}
char f2(int x) /*定义f2函数*/
{int b,j;
…}
main()/*主函数*/
{int m,n;
…}
p,q作用域
c1,c2作用域
局部变量(函数体内定义)作用域仅仅局限
于定义它的函数,在不同的函数内可以
定义同名的局部变量(f1、f2函数都有变量b)
全局变量(函数体外定义) :作用域从它定
义的位置开始到本源文件结束,变量名不能重。
(c1,c2的作用范围小)
int p=1,q=5;/*定义外部变量*/
char c1,c2;/*定义外部变量*/
4
研究式学习—C程序设计(第五章)
变量的存储类型(生存期)
问题:通过5次函数调用打印1到5的阶乘值。
1!=1,在1!的基础上再乘2,就得2!(2!=1!*2), 在2!的基础上再乘3,就得3!(3!=2!*3),…,
int fact(int x)
{ static int t=1;
t*=x;
return t;
}
main(){
int i;
for(i=1;i<=5;i++)
printf(“%d!=%d\n”i,fact(i));}
程序运行结果为:
1!=1
2!=2
3!=6
4!=24
5!=120
函数必须能保存
上一次的阶乘值!
5
研究式学习—C程序设计(第五章)
变量的完整定义
一个变量的完整定义形式为:
存储类型说明符数据类型说明符变量表
如:static int j; extern float x 等
定义变量时不但要说明变量的数据类型,还要说明变量的存储类型。变量的存储类型确定了变量的存储方式、生存期和作用域。
作用域:是指变量起作用的有效范围。按变量的作用域可以把变量分为全局变量和局部变量。
生存期:是指变量占用存储空间的时限。按变量的生存期可以把变量分为静态变量和动态变量。
6
研究式学习—C程序设计(第五章)
C语言的内存空间
程序代码区
静态存储区
动态存储区
*存放可执行程序的机器指令
*存放需要占用固定存储单元的变量
*存放不需要占用固定存储单元的变量
C语言程序所占用的存储空间通常分为三部分:
全局变量或静态变量存放在静态存储区中,直到整个程序运行结束时才释放存储单元;局部变量或自动变量存放在动态存储区中,函数调用结束时就释放存储单元。
7
研究式学习—C程序设计(第五章)
变量的存储类型
存储类型说明符有:
auto(自动)型:属于临时性存储,其存储空间可以被若干变量多次覆盖使用
register(寄存器)型(一般情况下不这样指定)
*存放在CPU的通用寄存器中,目的是提高执行速度
*long,double,float不能设为register型,因为超过寄存器长度
static(静态)型:存放在静态存储区域中,生命期长
extern(外部)型:用于定义或说明变量是外部的。
8
研究式学习—C程序设计(第五章)
局部变量的存储类型:auto static register
自动变量的使用:
#在函数内定义的变量,若没有指定存储类型就是自动类存储变量
#自动变量是在动态存储区内分配单元的。调用函数时分配这些单元,返回时释放这些单元
#自动变量在每调用一次时都赋一次值,且默认初值不确定
void test_auto()
{int va=0;
printf(“auto=%d,”,va);
++va; /*值不被保存*/
}
main()
{int i;
for(i=0;i<2;i++)
test_a

最近更新

网络社区检测算法-第1篇 35页

2025年四川文轩职业学院马克思主义基本原理概.. 13页

老龄心理健康现状与对策研究 29页

结石形成过程模拟研究 35页

绿色建筑融资风险评估 35页

2025年天津国土资源和房屋职业学院马克思主义.. 12页

2025年天津师范大学马克思主义基本原理概论期.. 12页

2025年天津职业技术师范大学马克思主义基本原.. 13页

高超声速推进系统 35页

绿色设计理念在设计行业的推广 26页

绢纺和丝织行业的数字化转型 28页

风机振动信号的自适应滤波技术 35页

2025年安徽财经大学马克思主义基本原理概论期.. 12页

高性能存储设备研发 38页

钢结构施工过程质量控制技术 35页

网络攻击检测与防御机制研究 29页

2025年山东中医药大学马克思主义基本原理概论.. 12页

2025年山西科技学院马克思主义基本原理概论期.. 12页

2025年巍山县幼儿园教师招教考试备考题库及答.. 31页

2025年平阴县招教考试备考题库带答案解析 32页

2025年广州东华职业学院马克思主义基本原理概.. 13页

2025年广西农业职业技术大学马克思主义基本原.. 13页

2025年广西职业技术学院单招职业技能测试题库.. 43页

2025年建平县招教考试备考题库带答案解析 31页

2025年彭泽县招教考试备考题库带答案解析 31页

2025年惠州工程职业学院单招综合素质考试题库.. 44页

2025年文成县招教考试备考题库带答案解析(必.. 31页

2025年无棣县幼儿园教师招教考试备考题库带答.. 30页

2025年晋中职业技术学院单招职业倾向性测试题.. 44页

2025年朗县招教考试备考题库含答案解析(夺冠.. 30页