C语言第十三讲.ppt

C语言第十三讲.ppt

ID:49252414

大小:211.00 KB

页数:25页

时间:2020-02-02

C语言第十三讲.ppt_第1页
C语言第十三讲.ppt_第2页
C语言第十三讲.ppt_第3页
C语言第十三讲.ppt_第4页
C语言第十三讲.ppt_第5页
资源描述:

《C语言第十三讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言电子教案(十三)第十三讲第八章函数第九章编译预处理主要内容:§8.9变量的存储类别§8.10内部函数和外部函数§9.1宏定义§9.2文件包含1§8.9变量的存储类别变量的存储类别是按时间域(生存期)来进行分类的。按生存期变量可分为静态存储变量和动态存储变量。2一、内存中用户区存储空间的分配内存系统区用户区存放系统程序存放用户文件和数据程序区:静态存储区:动态存储区:程序全局变量静态局部变量(用static声明的变量)局部自动变量(auto)函数的形参3二、变量的存储类别静态存储:定义变量时分配存储单元,函数调用结束时并不释放所占存储单元。离开函

2、数后变量的值仍能被引用,变量的生存期是程序运行期间。静态存储区中存储:静态局部变量、全局变量。动态存储:调用函数时分配存储单元,函数调用结束时释放所占存储单元。即离开函数后变量的值不能被引用,变量的生存期是函数运行期间。动态存储区中存储:自动局部变量、函数的形参。4二、变量的存储类别每一个变量都有两种属性:数据类型和存储类别,前者表示了变量所能存放的数据类型和范围,后者表示了变量在内存中的存储方式。变量在定义时存储类别缺省时,默认为自动变量。定义一个动态局部变量(自动变量):autointa;或者:inta;定义一个静态局部变量:staticintb

3、;动态局部变量定义后的初值是随机值静态变量定义后的初值是05三、局部变量的存储方式局部自动变量在动态存储区分配存储单元。局部静态变量在静态存储区分配存储单元。静态局部变量是在编译时赋初值的,只赋初值一次,下次调用函数时,这些变量保留上次调用结束时的值。 局部自动变量是在调用时赋初值,每调用一次,重新赋一次初值。6局部静态变量应用实例1f(inta){autointb=0;staticintc=3;b=b+1;c=c+1;return(a+b+c);}main(){inta=2,i;for(i=0;i<3;i++)printf("%d",f(a));}

4、c为静态局部变量,只在编译时赋初值3,第2次以后再调f函数时,c中保留上次调用后的值即第1次调用时c的值为3,调用结束时值为4;第2次调用时c的值为4,调用结束后值为5;第3次调用时c的值为5,调用结束后值为6。程序运行结果:789自动变量b,每次调用时都赋初值0运行程序静态变量c,每次调用结束后保留其值7局部静态变量应用实例2fun(){inta=2;staticintb=4;a=a+2;b+=2;printf("a=%db=%d",a,b);}main(){fun();fun();fun();}a=4b=6a=4b=8a=4b=10运行程序8

5、局部静态变量应用实例3longfun(intn){staticlongt=1;t=t*n;return(t);}main(){intn=7,i;for(i=1;i<=n;i++)printf("%ld",fun(i));}分析下面程序的功能:程序运行结果:126241205040运行程序9四、全局变量的存储方式全局变量在编译时被分配在静态存储区全局变量的生存期是整个程序运行期间10变量存储类别小结名称定义方法定义位置存储类别生存期作用域动态局部变量静态局部变量全局变量函数形参autointa;inta;staticinta;inta;staticin

6、ta;inta;函数内部复合语句内函数内部复合语句内函数外部函数说明部分动态存储区静态存储区静态存储区动态存储区函数复合语句程序程序函数函数内复合语句内函数内复合语句内本程序和其它程序函数内11第九章编译预处理所谓预处理就是C语言的编译系统在对程序进行通常的编译之前,先对这些特殊的命令进行预处理,然后将预处理的结果和源程序一起再进行通常的编译处理,以得到目标代码。C语言的预处理主要有以下三种: 1.宏定义 2.文件包含 3.条件编译C的编译预处理命令以"#"开头12§9.1宏定义宏定义以#define开头,当程序中多次使用某一常量或某一字符串时,可以

7、使用宏定义以使程序书写简单。如有:#defineM10在程序中可以用"10"取代所有的"M"。使用宏定义有两个注意事项:一是宏定义与函数不同;二是对于带参的宏,务必要进行宏替换后再分析程序的运行结果。13一、不带参的宏定义格式:#define标识符字符串宏展开:定义中的标识符叫宏名,在预编译时将宏名替换成字符串,这个过程称为宏展开(宏替换)。说明: (1)宏名一般用大写字母表示以便与变量 分开,但不是规定而只是习惯。(2)宏定义不是C语句,末尾不加分号。(3)程序中双引号中的宏名不进行宏替换。14无参的宏定义使用举例#defineM10main(){

8、intj,a[M];for(j=0;j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。