1、,IT Education & Training,Neusoft Institute of Information,Date: 2019年7月14日星期日,办公室:C7座201 EMAIL: 课件下载网址:ftp:/,任课教师:黄伟,第五章 函 数,授课要点,变量的存储类别,问题,#include void prt(); main() int x;for(x=1; x=5; x+) prt(); void prt() static int y=0;y+;printf(“%d“, y); ,输出结果: 12345,去掉static后的结果为多少?,问题分析,动态存储变量和静态存储变量 动态变量:
2、用auto关键字表示 如auto int p, f; /p,f为两个动态变量 在C中,默认的变量定义就是定义为动态变量 即上述的p,f变量定义与 int p, f; 是完全等价的。 静态变量:在程序生存期内一直有效。 注意,如果静态变量出现在函数中,不会因为函数的调用结束而丢失这个变量的值,变量的生存期,int a,b,c; /外部变量定义 main()int x, y; /内部变量float f; /内部变量/其他语句 int sum(int n) int s=0, i; /内部变量/语句 ,x, y, f的 有效区域,s,i的 有效区域,a, b, c的 有效区域,内部变量与外部变量的作用
3、区域是不一样的。,1变量的存储类型计算机的存储器分为内存和外存。还有一个小小的临时存储器称为寄存器,用以存储一些反复被加工的数据。C语言允许程序员区分是在主存还是在寄存器中开辟变量的存储空间。 2变量的生存期 (1)在编译时分配存储单元。这种变量的生存期为程序执行的整个过程,在该过程中占有固定的存储空间,称为永久存储。 (2)只在程序执行的某一段时间内存在。比如在函数的执行过程中存在。这种存储方式称为动态存储。,小结,小结,3变量的可用域变量的可用域也分为全局可用和局部可用。C语言中,用“存储属性”来表示以上三个方面的属性,如表所示。,模仿练习,1、写出以下程序的运行结果: int fun(i
4、nt a) /*a为形参,自动型局部变量*/ auto int b=0; /*b是自动型局部变量*/static int c=3; /*c是静态型局部变量,初始化仅进行一次*/b+=1; c=c+1;return a+b+c; main() int a=2,i; /*a和i都是自动型局部变量*/for(i=0;i3;i+)printf(“%dt“,fun(a); ,模仿练习,2、写出以下程序的运行结果: int sum(int n); /函数声明 int a=4,b=5,c=6; /外部变量定义 main() int x=1, y=2; float f=3.0; x=sum(10);print
5、f(“x=%d,y=%d,f=%fn“, x, y, f);printf(“a=%d,b=%d,c=%dn“, a, b, c);/printf(“s=%d, i=%dn“, s, i); int sum(int n) int s=0, i; for(i=1; i=n; i+) s = s+i;printf(“s=%d, i=%dn“, s, i);printf(“a=%d,b=%d,c=%dn“, a, b, c);/printf(“x=%d,y=%d,f=%fn“, x, y, f);return s; ,Neusoft Institute of Information,办公室:C7座201 EMAIL: 课件下载网址:ftp:/,