资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,Neusoft Institute of Information,Date:,*,IT Education&Training,IT Education&Training,Neusoft Institute of Information,Date:,07 十月 2024,办公室:,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,后的结果为多少?,问题分析,动态存储变量和静态存储变量,动态变量:用,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,的,有效区域,内部变量与外部变量的作用区域是不一样的。,1,变量的存储类型,计算机的存储器分为内存和外存。还有一个小小的临时存储器称为寄存器,用以存储一些反复被加工的数据。,C,语言允许程序员区分是在主存还是在寄存器中开辟变量的存储空间。,2,变量的生存期,(,1,)在编译时分配存储单元。这种变量的生存期为程序执行的整个过程,在该过程中占有固定的存储空间,称为永久存储。,(,2,)只在程序执行的某一段时间内存在。比如在函数的执行过程中存在。这种存储方式称为动态存储。,小结,小结,3,变量的可用域,变量的可用域也分为全局可用和局部可用。,C,语言中,用“存储属性”来表示以上三个方面的属性,如表所示。,名称,寄存器变量,自动变量,静态变量,外部变量,存储属性,register,auto,static,extern,存储位置,寄存器,主存,生存期,动态生存期,永久生存,期,作用域,局部,局部或全局,全局,模仿练习,1,、写出以下程序的运行结果:,int,fun(int 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);,printf(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:/,
展开阅读全文