(OK)第7章用函数实现模块化程序设计综述.ppt

(OK)第7章用函数实现模块化程序设计综述.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(OK)第7章用函数实现模块化程序设计综述

实验六 指针和结构体 实验内容: 第八章习题:8.6(要求预习报告) 第九章习题:9.5 常见错误分析 1.忘记对所调用的函数进行函数原型声明 常见错误分析 2.对函数声明与函数定义不匹配 常见错误分析 3. 未用#include指令去包含所需要特定的头文件 常见错误分析 4. 误认为函数形参值的改变会影响实参的值 常见错误分析 5. 函数的实参和形参类型不一致 常见错误分析 6. 函数参数的求值顺序 本章作业 课后习题: 7.4,7.6,7.14 本章实验: 7.3,7.8,7.18 7.9.2 局部变量的存储类别 1、自动变量(auto变量) 在调用函数时系统会给变量分配存储空间,在函数调用结束时自动释放这些存储空间,这类局部变量称为自动变量 自动变量用关键字auto作存储类别的声明。 关键字“auto”可以省略,auto不写则隐含确定为“自动存储类别”,它属于动态存储方式。 程序中大多数变量属于自动变量。 之前函数中定义变量都没有声明为auto,则都 隐含指定为自动变量。 int f (int a) { auto int b,c=3; ….. } /*定义f函数,a为形参*/ /*定义b,c为自动变量*/ auto int b,c=3; int b,c=3; 例 auto 变量的作用域 main()/*8-19.c*/ { void prt(void); int x=1; printf(“\n”); { int x=3; prt(); printf(“2nd x=%d\n”,x); } printf(“1st x=%d\n”,x); } void prt(void) { int x=5; printf(“3th x=%d\n”,x); } 运行结果: 3th x=5 2nd x=3 1st x=1 x=1作用域 x=1作用域 x=3作用域 x=5作用域 2、静态局部变量(static局部变量) 静态局部变量:函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。 静态局部变量用static进行声明。 #include stdio.h void main()/*8-20.c*/ { int f(int a); int a=2,i; for(i=0;i3;i++) printf(“%d ”,f(a)); } int f(int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } 运行结果: 7 8 9 #include stdio.h void main()/*8-20.c*/ { int f(int a); int a=2,i; for(i=0;i3;i++) printf(“%d ”,f(a)); } int f(int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } 说明: 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。自动变量属于动态存储类别,占动态存储区空间,函数调用结束后即释放。 对静态局部变量是在编译时赋初值的,即只赋初值一次,以后每次调用时都不再重新赋初值,而只是保留上次函数调用结束时的值。对自动变量赋初值,是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句 若在定义局部变量时不赋初值,则对静态局部变量来说,编译时自动赋初值0(整型变量)。而对自动变量来说,如果不赋初值则它的值是不确定的值 静态局部变量在函数调用结束后仍然存在,但其它函数不能引用它 #include stdio.h/*8-21.c*/ void main() { int fac(int n); int i; for(i=1;i=5;i++) printf(“%d!=%d\n”,i,fac(i)); } int fac(int n) { static int f=1; f=f*n; return(f); } 例 输出1到5的阶乘值 运行结果: 1!=1 2!

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档