《C程序设计教案272课时——局部变量和全局变量变量的存储方式和生存期.docx》由会员分享,可在线阅读,更多相关《C程序设计教案272课时——局部变量和全局变量变量的存储方式和生存期.docx(8页珍藏版)》请在第一文库网上搜索。
1、教案序号27周次授课形式新授授课章节名称局部变量和全局变量、变量的存储方式和生存期教学目的理解局部变量和全局变量、变量的存储方式生存期教学重点理解局部变量和全局变量教学难点理解变量的存储方式和生存期使用教具机房课外作业课后体会授课主要内容7.8局部变量和全局变量7.8.1 局部变量7.8.2 全局变量7.8.1局部变量定义变量可能有三种情况: 在函数的开头定义 在函数内的复合语句内定义 在函数的外部定义7.8.1局部变量在一个函数内部定义的变量只在本函数范围内有效在复合语句内定义的变量只在本复合语句范围内有效在函数内部或复合语句内部定义的变量称为“局部变量”f1oatf1(inta)intb,
2、c;charf2(intx,inty)intij;intnain()intm,n;returnO;)f1oatf1(inta)intb,c;charf2(intx,inty)Mtij;intnain()inta,b;return0;)intmain()inta,b;intc;c=a+b;7.8.2全局变量在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量外部变量是全局变量(也称全程变量)全局变量可以为本文件中其他函数所共用有效范围为从定义变量的位置开始到本源文件结束intp=1,q=5f1oatf1(inta)itb,c;charc1,c2;charf2(intx,inty)in
3、ti,j;intmain()intm,n;returnO;)intp=1,q=5f1oatf1(inta)intb,c;charc1,c2;charf2(intx,inty)iti,j;intmain()intm,n;return0;)例7.14有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。解题思路:调用一个函数可以得到一个函数返回值,现在希望通过函数调用能得到3个结果。可以利用全局变量来达到此目的。#inc1udef1oatMaX=O,Min=O;intnain()f1oataverage(f1oatarray,intn);f1oatav
4、e,score10;inti;printf(,P1easeenter10scores:nH);for(i=0;i10;i+)scanf(,*%f*,&scorei);ave=average(score,10);printf(,max=%6.2fnmin=%6.2fnaverage=%6.2fnM,Max,Minave);return0;)f1oataverage(f1oatarray,intn)inti;f1oataver,sum=arrayO;Max=Min=array0;for(i=1;iMax)Max=arrayi;e1seif(arrayiMin)Min=arrayi;sum=sum+
5、arrayi;)aver=sumn;return(aver);例7.15若外部变量与局部变量同名,分析结果。#inc1udeinta=3,b=5;intmain()intmax(inta,intb);inta=8;printf(tmax=%dn,max(a,b);return0;)intmax(inta,intb)intc;c=ab?a:b;return(c);)#inc1udeinta=3,b=5;intnain()intmax(inta,intb);inta=8;printf(ttmax=%dn,max(a,b);return0;)intmax(inta,intb)intc;c=ab?a:
6、b;return(c);)7.9变量的存储方式和生存期7.9.1 动态存储方式与静态存储方式7.9.2 局部变量的存储类别7.9.3 全局变量的存储类别7.9.4 存储类别小结791动态存储方式与静态存储方式从变量的作用域的角度来观察,变量可以分为全局变量和局部变量从变量值存在的时间(即生存期)观察,变量的存储有两种不同的方式:静态存储方式和动态存储方式静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式每一个变量和函数都有两个属性:数据类型和数据的存储类别数据类型,如整型、浮点型等存储类别指的是数据在内存中存储的方式(如
7、静态存储和动态存储)存储类别包括:自动的、静态的、寄存器的、外部的根据变量的存储类别,可以知道变量的作用域和生存期792局部变量的存储类别1.自动变量(auto变量) 局部变量,如果不专门声明存储类别,都是动态地分配存储空间的 调用函数时,系统会给局部变量分配存储空间,调用结束时就自动释放空间。因此这类局部变量称为自动变量 自动变量用关键字auto作存储类别的声明 7.9.2局部变量的存储类别intf(inta)(autointb,c=3; 7.9.2局部变量的存储类别2.静态局部变量(StatiC局部变量)希望函数中的局部变*在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在
8、下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值),这时就应该指定该局部变量为“静态局部变量”,用关键字StatiC进行声明例7.16考察静态局部变量的值。#inc1udeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printfft%dn,f(a);return0;)例7.16考察静态局部变量的值。#inc1udeintmain()intf(int);inta=2,i;for(i=0;i3;i+)printf(u%dn,f(a);return0;)例7.16考察静态局部变量的值。#inc1udeintmain()intf(int);int
9、a=2,i;for(i=0;i3;i+)printf(u%dn,f(a);return0;例7.16考察静态局部变量的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(u%dn,f(a);return0;)例7.16考察障态局部变量的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(4t%dn,f(a);return0;)例7.16考察静态局部变就的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)prin
10、tf(tt%dn,f(a);return0;)例7.16考察静态局部变量的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(u%dn,f(a);return0;)例7.16考察静态局部变量的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(w%dn,f(a);returnO;例7.16考察静态局部变量的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(4t%dn,f(a);return0;)例
11、7.16考察静态局部变量的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(tt%dn,f(a);return0;)例7.16考察静态局部变就的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(u%dn,f(a);return0;)例7.16考察静态局部变量的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(u%dn,f(a);return0;)例7.16考察静态局部变量的值。#inc1ude
12、intnain()intf(int);inta=2,i;for(i=0;i3;i+)printf(4t%dn,f(a);returnO;)例7.16考察静态局部变量的值。#inc1udeintnain()intf(int);inta=2,i;for(i=0;i解题思路:可以编一个函数用来进行连乘,如第1次调用时进行I乘1,第2次调用时再乘以2,第3次调用时再乘以3,依此规律进行下去。#inc1udeintnain()intfac(intn);inti;for(i=1;i一般情况下,变量(包括静态存储方式和动态存储方式)的值是存放在内存中的寄存器变量允许将局部变量的值放在CPU中的寄存器中现在的计算机能够识别使用频繁的变量,从而自动地将这些变量放在寄存器中,而不需要程序设计者指定