收藏 分销(赏)

用函数实现模块化程序设计市公开课一等奖百校联赛特等奖课件.pptx

上传人:快乐****生活 文档编号:3706108 上传时间:2024-07-15 格式:PPTX 页数:64 大小:356.59KB
下载 相关 举报
用函数实现模块化程序设计市公开课一等奖百校联赛特等奖课件.pptx_第1页
第1页 / 共64页
用函数实现模块化程序设计市公开课一等奖百校联赛特等奖课件.pptx_第2页
第2页 / 共64页
用函数实现模块化程序设计市公开课一等奖百校联赛特等奖课件.pptx_第3页
第3页 / 共64页
用函数实现模块化程序设计市公开课一等奖百校联赛特等奖课件.pptx_第4页
第4页 / 共64页
用函数实现模块化程序设计市公开课一等奖百校联赛特等奖课件.pptx_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、7.1函数是什么函数是什么7.2函数定义和调用函数定义和调用7.3函数嵌套调用和递归调用函数嵌套调用和递归调用7.4数组作为函数参数数组作为函数参数7.5变量作用域和生存期变量作用域和生存期第第7章章 用函数实现模用函数实现模块化程序设计块化程序设计P168第1页7.17.1 函数是什么函数是什么函数是什么函数是什么假如程序功效比较多,规模比较大,假如程序功效比较多,规模比较大,把全部程序代码都写在一个主函数中,把全部程序代码都写在一个主函数中,就会使主函数变得庞杂、头绪不清,就会使主函数变得庞杂、头绪不清,使阅读和维护程序变得困难。使阅读和维护程序变得困难。P168第2页有时程序中要屡次实现

2、某一功效,就有时程序中要屡次实现某一功效,就需要屡次重复编写实现此功效程序代需要屡次重复编写实现此功效程序代码。这使程序冗长,不精炼。码。这使程序冗长,不精炼。7.17.1 函数是什么函数是什么函数是什么函数是什么P168第3页采取采取“组装组装”方法简化程序设计过程方法简化程序设计过程事先编好一批函数实现各种不一样功效事先编好一批函数实现各种不一样功效用到什么用到什么函数函数就直接装就直接装使用使用就能够就能够这就是这就是模块化程序设计模块化程序设计7.17.1 函数是什么函数是什么函数是什么函数是什么P168第4页函数就是功效函数就是功效(Function)每一个函数用来实现一个特定功效每

3、一个函数用来实现一个特定功效函数名字应反应其代表功效函数名字应反应其代表功效7.17.1 函数是什么函数是什么函数是什么函数是什么P168第5页在设计一个较大程序时,往往把它分为在设计一个较大程序时,往往把它分为若干个程序模块,每一个模块包含一个若干个程序模块,每一个模块包含一个或多个函数,每个函数实现一个特定功或多个函数,每个函数实现一个特定功效。效。7.17.1 函数是什么函数是什么函数是什么函数是什么P168第6页一个程序可由一个主函数和若干个其一个程序可由一个主函数和若干个其它函数组成。由主函数调用其它函数,它函数组成。由主函数调用其它函数,其它函数也能够相互调用。同一个函数其它函数也

4、能够相互调用。同一个函数能够被一个或多个函数调用任意屡次能够被一个或多个函数调用任意屡次7.17.1 函数是什么函数是什么函数是什么函数是什么P168第7页7.17.1 函数是什么函数是什么函数是什么函数是什么P168mainabcfghdeie第8页除了能够使用库函数外,除了能够使用库函数外,还能够还能够编写一编写一些些本事域或本单位惯用到一些专用函数,本事域或本单位惯用到一些专用函数,供本事域或本单位人员使用供本事域或本单位人员使用。、。、在程序设计中要善于利用函数,能够降在程序设计中要善于利用函数,能够降低各人重复编写程序段工作量,同时能低各人重复编写程序段工作量,同时能够方便地实现模块

5、化程序设计。够方便地实现模块化程序设计。7.17.1 函数是什么函数是什么函数是什么函数是什么P168第9页说明:说明:(1)一个程序由一个或多个程序模块组一个程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。成,每一个程序模块作为一个源程序文件。对于较大程序,一般不把全部内容全放在对于较大程序,一般不把全部内容全放在一个源程序文件中,而是将它们分别放在一个源程序文件中,而是将它们分别放在若干个源文件中,由若干个源程序文件组若干个源文件中,由若干个源程序文件组成一个成一个C程序。这么便于分别编写、分别编程序。这么便于分别编写、分别编译,提高调试效率。一个源程序文件可认译,提高调试

6、效率。一个源程序文件可认为多个为多个C程序所调用。程序所调用。第10页说明:说明:(2)一个源程序文件由一个或多个函数以及其一个源程序文件由一个或多个函数以及其它相关内容组成。一个源程序文件是一个编译它相关内容组成。一个源程序文件是一个编译单位,在程序单位,在程序编译时是以源程序文件为单位进编译时是以源程序文件为单位进行编译行编译,而不是以函数为单位进行编译。,而不是以函数为单位进行编译。第11页说明:说明:(3)不论不论main函数出现在什么位置,总是函数出现在什么位置,总是从从main函数开始执行。假如在函数开始执行。假如在main函数函数中调用其他函数,在调用后流程返回到中调用其他函数,

7、在调用后流程返回到main函数,在函数,在main函数中结束整个程序函数中结束整个程序运行。运行。第12页说明:说明:(4)全部函数都是平行,即在定义函数时是分全部函数都是平行,即在定义函数时是分别进行,是别进行,是相互独立相互独立。一个函数并不隶属于另。一个函数并不隶属于另一个函数,即函数一个函数,即函数不能嵌套定义不能嵌套定义。函数间能够。函数间能够相互调用,但不能调用相互调用,但不能调用main函数。函数。main函函数是数是由由系统调用。系统调用。第13页说明:说明:(5)从用户使用角度看,函数有两种。从用户使用角度看,函数有两种。u库函数库函数,它是由系统提供,用户无须自己定义,它是

8、由系统提供,用户无须自己定义而直接使用它们。应该说明,不一样而直接使用它们。应该说明,不一样C语言编语言编译系统提供库函数数量和功效会有一些不一样,译系统提供库函数数量和功效会有一些不一样,当然许多基本函数是共同。当然许多基本函数是共同。u用户用户自己自己定义函数定义函数。它是用以处理用户专门需。它是用以处理用户专门需要函数。要函数。第14页说明:说明:(6)从函数形式看,函数分两类。从函数形式看,函数分两类。无参函数无参函数。函数没有参数,普通用来执行固。函数没有参数,普通用来执行固定一组操作。无参函数能够带回或不带回函数定一组操作。无参函数能够带回或不带回函数值,但普通以不带回函数值居多。

9、值,但普通以不带回函数值居多。有参函数有参函数。在调用函数时,要给出实参。主。在调用函数时,要给出实参。主调函数在调用被调用函数时,经过参数向被调调函数在调用被调用函数时,经过参数向被调用函数传递数据,普通情况下,执行被调用函用函数传递数据,普通情况下,执行被调用函数时会得到一个函数值,供主调函数使用。数时会得到一个函数值,供主调函数使用。第15页7.27.2 函数定义和调用函数定义和调用函数定义和调用函数定义和调用7.2.1为何要定义函数为何要定义函数7.2.2函数定义函数定义7.2.3函数调用函数调用7.2.4对被调用函数申明和函数原型对被调用函数申明和函数原型P170第16页C语言要求,

10、在程序中用到全部函数,语言要求,在程序中用到全部函数,必须必须“先定义,后使用先定义,后使用”指定指定函数函数名字名字、函数、函数返回值类型返回值类型、函数、函数实现实现功效功效以及以及参数个数与类型参数个数与类型,将这些,将这些信息通知编译系统。信息通知编译系统。7.2.1 7.2.1 为何要定义函数为何要定义函数为何要定义函数为何要定义函数P170第17页指定函数名字,方便以后按名调用指定函数名字,方便以后按名调用指定函数类型,即函数返回值类型指定函数类型,即函数返回值类型指定函数参数名字和类型,方便在调用指定函数参数名字和类型,方便在调用函数时向它们传递数据函数时向它们传递数据指定函数功

11、效。这是最主要,这是在函指定函数功效。这是最主要,这是在函数体中处理数体中处理7.2.1 7.2.1 为何要定义函数为何要定义函数为何要定义函数为何要定义函数P170第18页假如程序中要调用假如程序中要调用库函数库函数,只需用,只需用#include指令把相关头文件包含到本指令把相关头文件包含到本文件模块中即可。文件模块中即可。假如想使用库函数中没有函数,需要程假如想使用库函数中没有函数,需要程序设计者在程序中序设计者在程序中自己定义自己定义。7.2.1 7.2.1 为何要定义函数为何要定义函数为何要定义函数为何要定义函数P170第19页7.2.2 7.2.2 函数定义函数定义函数定义函数定义

12、1.怎样定义无参函数怎样定义无参函数函数名后面圆括号中空,没有参数函数名后面圆括号中空,没有参数定义无参函数普通形式为定义无参函数普通形式为:类型名类型名函数名()函数名()函数体函数体P171包含申明部分和包含申明部分和语句部分语句部分指定函数指定函数值类型值类型第20页7.2.2 7.2.2 函数定义函数定义函数定义函数定义1.怎样定义无参函数怎样定义无参函数函数名后面圆括号中空,没有参数函数名后面圆括号中空,没有参数定义无参函数普通形式为定义无参函数普通形式为:类型名类型名函数名()函数名()函数体函数体P171表示不需要表示不需要带回函数值带回函数值void第21页7.2.2 7.2.

13、2 函数定义函数定义函数定义函数定义2.怎样定义有参函数怎样定义有参函数定义有参函数普通形式为定义有参函数普通形式为:类型标识符类型标识符函数名(形式参数表列)函数名(形式参数表列)函数体函数体P171第22页7.2.2 7.2.2 函数定义函数定义函数定义函数定义2.怎样定义有参函数怎样定义有参函数intmax(intx,inty)intz;if(xy)z=x;elsez=y;return(z);P171求求x和和y二者二者中大者中大者第23页7.2.3 7.2.3 函数调用函数调用函数调用函数调用1.调用无参函数形式调用无参函数形式函数名函数名()如如print_star()2.调用无参函

14、数形式调用无参函数形式函数名(实参表列)函数名(实参表列)如如max(a,b)P172假如有多个假如有多个参数,用逗参数,用逗号隔开号隔开第24页例例7.2输入两个整数,输出二者中大输入两个整数,输出二者中大者。要求在主函数中输入两个整数,者。要求在主函数中输入两个整数,用一个函数用一个函数max求出其中大者,并求出其中大者,并在主函数中输出此值。在主函数中输出此值。第25页#includeintmax(intx,inty)intz;if(xy)z=x;elsez=y;return(z);参数类型参数类型函数类型函数类型定义函数定义函数定义函数内定义函数内使用变量使用变量第26页c=max(a

15、,b);(main函数)函数)intmax(intx,inty)(max函数)函数)intz;z=xy?x:y;return(z);第27页#includevoidmain()intmax(intx,inty);inta,b,c;printf(”pleaseinputtwonumber:”);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“maxis%dn”,c);intmax(intx,inty)intz;if(xy)z=x;elsez=y;return(z);形式参数形式参数实际参数实际参数第28页函数调用函数调用过程过程:在定义函数中指定形参,在未出现函数

16、调在定义函数中指定形参,在未出现函数调用时,它们并不占内存中存放单元。在发用时,它们并不占内存中存放单元。在发生函数调用时,函数生函数调用时,函数max形参被暂时分配形参被暂时分配内存单元。内存单元。2a3bxy23实参实参形参形参第29页函数调用函数调用过程过程:2a3bxy23实参实参形参形参调用结束,形参单元被释放调用结束,形参单元被释放实参单元仍保留并维持原值,没有改变实参单元仍保留并维持原值,没有改变假如在执行一个被调用函数时,形参值发假如在执行一个被调用函数时,形参值发生改变,不会改变主调函数实参值生改变,不会改变主调函数实参值第30页调用函数调用函数方式方式:按函数在程序中出现位

17、置来分,能够有以按函数在程序中出现位置来分,能够有以下下3种函数调用方式种函数调用方式.函数语句函数语句调用没有返回值函数,函数调用单独作为调用没有返回值函数,函数调用单独作为一个语句一个语句 如例如例7.1中中“print_star();”第31页调用函数调用函数方式方式:按函数在程序中出现位置来分,能够有以按函数在程序中出现位置来分,能够有以下下3种函数调用方式种函数调用方式.函数表示式函数表示式函数出现在一个表示式中,这种表示式称函数出现在一个表示式中,这种表示式称为函数表示式为函数表示式 如例如例7.2中中“c=max(a,b);”第32页调用函数调用函数方式方式:按函数在程序中出现位

18、置来分,能够有以按函数在程序中出现位置来分,能够有以下下3种函数调用方式种函数调用方式.函数参数函数参数函数调用作为一个函数实参函数调用作为一个函数实参 如如printf(%d,max(a,b);第33页7.2.47.2.4 对被调用函数申明和对被调用函数申明和对被调用函数申明和对被调用函数申明和函数原型函数原型函数原型函数原型P175在一个函数中调用另一个函数需要具备以在一个函数中调用另一个函数需要具备以下条件:下条件:(1)被调用函数必须是被调用函数必须是已经定义函数已经定义函数(是库函(是库函数或用户自己定义函数)数或用户自己定义函数)。(2)假如使用库函数,应该在本文件开头假如使用库函

19、数,应该在本文件开头加对加对应应#include指令指令。(3)假如使用自己定义函数,而该函数位置在假如使用自己定义函数,而该函数位置在调用它函数后面调用它函数后面,应该应该进行进行函数函数申明申明第34页7.2.47.2.4 对被调用函数申明和对被调用函数申明和对被调用函数申明和对被调用函数申明和函数原型函数原型函数原型函数原型P175函数原型普通形式有两种函数原型普通形式有两种:如如intmax(intx,inty);intmax(int,int);原型说明能够放在文件开头,这时原型说明能够放在文件开头,这时本本文件文件中中全部函数都能够使用此函数全部函数都能够使用此函数第35页7.3 7

20、.3 函数嵌套调用和递归调用函数嵌套调用和递归调用函数嵌套调用和递归调用函数嵌套调用和递归调用P1777.3.1 函数嵌套调用函数嵌套调用7.3.2 函数递归调用函数递归调用第36页7.3.1 7.3.1 函数嵌套调用函数嵌套调用函数嵌套调用函数嵌套调用调用一个函数过程中,又调用一个函数过程中,又能够能够调用调用另一个函数另一个函数P177第37页7.3.1 7.3.1 函数嵌套调用函数嵌套调用函数嵌套调用函数嵌套调用P177main函数函数调用调用a函数函数结束结束a函数函数调用调用b函数函数b函数函数第38页7.4 7.4 数组作为函数参数数组作为函数参数数组作为函数参数数组作为函数参数7

21、.4.1数组元素作函数实参数组元素作函数实参7.4.2数组名作函数参数数组名作函数参数P184第39页7.4.1 7.4.1 数组元素作函数实参数组元素作函数实参数组元素作函数实参数组元素作函数实参因为实参能够是表示式,而数组元素能够因为实参能够是表示式,而数组元素能够是表示式组成部分,所以数组元素能够作是表示式组成部分,所以数组元素能够作为函数实参。为函数实参。P185第40页7.4.2 7.4.2 数组名作函数参数数组名作函数参数数组名作函数参数数组名作函数参数P186希望在函数中处理整个数组元素时,能够希望在函数中处理整个数组元素时,能够用数组名作为函数实参用数组名作为函数实参注意,此时

22、只是将数组首元素地址传递给注意,此时只是将数组首元素地址传递给所对应形参,所以对应形参应该是指针变所对应形参,所以对应形参应该是指针变量量(见第见第8章章)。第41页例例7.7有有10个学生成绩,用一个函数求全体个学生成绩,用一个函数求全体学生平均成绩。学生平均成绩。解题思绪:解题思绪:u在主函数中定义一个实型数组在主函数中定义一个实型数组score,将输入,将输入10个学生成绩存放在数组中个学生成绩存放在数组中u设计函数设计函数average,用来求学生平均成绩,用来求学生平均成绩u需要把数组相关信息传递给需要把数组相关信息传递给average函数函数u采取用数组名作为实参,把数组地址传给采

23、取用数组名作为实参,把数组地址传给average函数,在该函数中对数组进行处理函数,在该函数中对数组进行处理第42页#includevoidmain()floataverage(floatarray10);floatscore10,aver;inti;printf(input10scores:n);for(i=0;i10;i+)scanf(%f,&scorei);aver=average(score);printf(averagescoreis%5.2fn,aver);数组名作实参数组名作实参第43页floataverage(floatarray10)inti;floataver,sum=ar

24、ray0;for(i=1;i10;i+)sum=sum+arrayi;aver=sum/10;return(aver);与与score共占同一存放单元共占同一存放单元实参、形参都是实参、形参都是float型型相当于相当于score0相当于相当于scorei第44页7.5 7.5 变量作用域和生存期变量作用域和生存期变量作用域和生存期变量作用域和生存期7.5.1变量作用域变量作用域-局部变量和全局变量局部变量和全局变量7.5.2变量存放方式和生存期变量存放方式和生存期7.5.3作用域和生存期小结作用域和生存期小结P192第45页7.5.1 7.5.1 变量作用域变量作用域变量作用域变量作用域局部

25、变量和全局变量局部变量和全局变量局部变量和全局变量局部变量和全局变量1局部变量局部变量u在函数和复合语句内定义变量,称为内部变在函数和复合语句内定义变量,称为内部变量或量或局部变量局部变量u只在只在本函数或复合语句内本函数或复合语句内范围内有效范围内有效(从定从定义点开始到函数或复合语句结束义点开始到函数或复合语句结束)u在此函数或复合语句以外是不能使用这些变在此函数或复合语句以外是不能使用这些变量量P192第46页2全局变量全局变量一个程序可以包含一个或若干个源程序文件一个程序可以包含一个或若干个源程序文件(即即程序模块程序模块),而一个源文件可以包含一个或若干,而一个源文件可以包含一个或若

26、干个函数个函数在函数之外定义变量是外部变量,也称为全局变在函数之外定义变量是外部变量,也称为全局变量量(或全程变量或全程变量)全局变量有效范围为从定义变量位置开始到根源全局变量有效范围为从定义变量位置开始到根源文件结束,在此范围内可认为本文件中全部函数文件结束,在此范围内可认为本文件中全部函数所共用所共用第47页2全局变量全局变量u在一个函数中既能够使用本函数中局部变量,在一个函数中既能够使用本函数中局部变量,又能够使用有效全局变量。又能够使用有效全局变量。u假如在同一个源文件中,外部变量与局部变假如在同一个源文件中,外部变量与局部变量同名,则在局部变量作用范围内,外部变量同名,则在局部变量作

27、用范围内,外部变量被量被“屏蔽屏蔽”了,即它不起作用,此时局部了,即它不起作用,此时局部变量是有效。变量是有效。第48页7.5.2 7.5.2 变量存放方式和生存期变量存放方式和生存期变量存放方式和生存期变量存放方式和生存期变量变量生存期生存期:变量值存在时间变量值存在时间变量两种变量两种存放方式存放方式:静态存放方式和动:静态存放方式和动态存放方式态存放方式u静态静态存放方式是指在程序运行期间由系统分存放方式是指在程序运行期间由系统分配固定存放空间方式配固定存放空间方式u动态动态存放方式是在程序运行期间依据需要进存放方式是在程序运行期间依据需要进行动态分配存放空间方式行动态分配存放空间方式P

28、195第49页7.5.2 7.5.2 变量存放方式和生存期变量存放方式和生存期变量存放方式和生存期变量存放方式和生存期全局变量采取静态存放方式全局变量采取静态存放方式,在程序开,在程序开始执行时给全局变量分配存放区,程序始执行时给全局变量分配存放区,程序执行完成释放。在程序执行过程中它们执行完成释放。在程序执行过程中它们占据固定存放单元,而不是动态地进行占据固定存放单元,而不是动态地进行分配和释放。分配和释放。P195第50页7.5.2 7.5.2 变量存放方式和生存期变量存放方式和生存期变量存放方式和生存期变量存放方式和生存期在函数中定义变量,在函数调用开始时在函数中定义变量,在函数调用开始

29、时分配动态存放空间,函数结束时释放这分配动态存放空间,函数结束时释放这些空间。在程序执行过程中,这种分配些空间。在程序执行过程中,这种分配和释放是动态。和释放是动态。P195第51页7.5.2 7.5.2 变量存放方式和生存期变量存放方式和生存期变量存放方式和生存期变量存放方式和生存期每一个变量和函数都有两个属性:每一个变量和函数都有两个属性:数据数据类型类型和数据和数据存放类别存放类别u数据类型数据类型,如整型、浮点型等,如整型、浮点型等u存放类别存放类别指是数据在内存中存放方式指是数据在内存中存放方式(如静如静态存放和动态存放态存放和动态存放)P195第52页1.auto申明自动变量申明自

30、动变量(auto变量变量)u函数中形参和在函数中定义变量函数中形参和在函数中定义变量(包含在复包含在复合语句中定义变量合语句中定义变量),都属于这类,都属于这类u在调用该函数时,系统给这些变量分配存放在调用该函数时,系统给这些变量分配存放空间,在函数调用结束时就自动释放这些存空间,在函数调用结束时就自动释放这些存放空间。所以这类局部变量称为放空间。所以这类局部变量称为自动自动变量。变量。u自动变量用关键字自动变量用关键字auto作存放类别申明作存放类别申明第53页intf(inta)autointb,c=3;能够省略能够省略第54页2.static申明静态变量申明静态变量以下情况需要指定以下情

31、况需要指定static存放类别:存放类别:u希望函数中局部变量值在函数调用结束后不希望函数中局部变量值在函数调用结束后不消失而继续消失而继续保留原值保留原值,即其占用存放单元不,即其占用存放单元不释放,在下一次该函数调用时,该变量已经释放,在下一次该函数调用时,该变量已经有值,就是上一次函数调用结束时值。这时有值,就是上一次函数调用结束时值。这时就应用关键字就应用关键字static指定该局部变量为指定该局部变量为“静静态局部变量态局部变量”。第55页对静态局部变量说明:对静态局部变量说明:(1)静态局部变量静态局部变量属于静态存放类别,在静属于静态存放类别,在静态存放区内分配存放单元。在程序整

32、个运行态存放区内分配存放单元。在程序整个运行期间都期间都不释放不释放。而。而自动变量自动变量(即动态局部变(即动态局部变量)属于动态存放类别,占动态存放区空间量)属于动态存放类别,占动态存放区空间而不占静态存放区空间,函数调用结束后即而不占静态存放区空间,函数调用结束后即释放释放第56页对静态局部变量说明:对静态局部变量说明:(2)对对静态局部变量静态局部变量是在是在编译时赋初值编译时赋初值,即,即只赋初值一次,在程序运行时它已经有初值。只赋初值一次,在程序运行时它已经有初值。以后每次调用函数时不再重新赋初值而只是以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时值。而对保留上次函数

33、调用结束时值。而对自动变量自动变量赋初值,不是在编译时进行,而是在赋初值,不是在编译时进行,而是在函数调函数调用时进行用时进行,每调用一次函数重新给一次初值,每调用一次函数重新给一次初值,相当于执行一次赋值语句。相当于执行一次赋值语句。第57页对静态局部变量说明:对静态局部变量说明:(3)如在定义局部变量时不赋初值话,则对如在定义局部变量时不赋初值话,则对静态局部变量来说,编译时静态局部变量来说,编译时自动赋初值自动赋初值(对数值型变量)或空字符(对字符变量)。(对数值型变量)或空字符(对字符变量)。而对自动变量来说,假如不赋初值则它值是而对自动变量来说,假如不赋初值则它值是一个不确定值。这是

34、因为每次函数调用结束一个不确定值。这是因为每次函数调用结束后存放单元已释放,下次调用时又重新另分后存放单元已释放,下次调用时又重新另分配存放单元,而所分配单元中值是不可知。配存放单元,而所分配单元中值是不可知。第58页对静态局部变量说明:对静态局部变量说明:(4)即使静态局部变量在函数调用结束后依即使静态局部变量在函数调用结束后依然存在,但其它函数是不能引用它。因为它然存在,但其它函数是不能引用它。因为它是局部变量,只能被本函数引用,而不能被是局部变量,只能被本函数引用,而不能被其它函数引用。其它函数引用。第59页对静态局部变量说明:对静态局部变量说明:(5)用静态存放要多占内存(长久占用不释

35、用静态存放要多占内存(长久占用不释放,而不能像动态存放那样一个存放单元可放,而不能像动态存放那样一个存放单元可供多个变量使用,节约内存),而且降低了供多个变量使用,节约内存),而且降低了程序可读性,当调用次数多时往往弄不清静程序可读性,当调用次数多时往往弄不清静态局部变量当前值是什么。所以,若非必要,态局部变量当前值是什么。所以,若非必要,不要多用静态局部变量。不要多用静态局部变量。第60页3.register申明存放器变量申明存放器变量普通情况下,变量(包含静态存放方式和普通情况下,变量(包含静态存放方式和动态存放方式)值是存放在内存中动态存放方式)值是存放在内存中存放器变量存放器变量允许将

36、局部变量值放在允许将局部变量值放在CPU中中存放器中存放器中现在计算机能够识别使用频繁变量,从而现在计算机能够识别使用频繁变量,从而自动地将这些变量放在存放器中,而不需自动地将这些变量放在存放器中,而不需要程序设计者指定要程序设计者指定第61页4.extern申明外部变量作用范围申明外部变量作用范围(1)在一个文件内扩展外部变量作用域在一个文件内扩展外部变量作用域u假如外部变量不在文件开头定义,其有效作假如外部变量不在文件开头定义,其有效作用范围只限于定义处到文件结束用范围只限于定义处到文件结束u假如因为某种考虑,在定义点之前函数需要假如因为某种考虑,在定义点之前函数需要引用该外部变量,则应该

37、在引用之前用关键引用该外部变量,则应该在引用之前用关键字字extern对该变量作对该变量作“外部变量申明外部变量申明”第62页4.extern申明外部变量作用范围申明外部变量作用范围(2)将外部变量作用域扩展到其它文件将外部变量作用域扩展到其它文件u在任一个文件中定义外部变量,而在另一文在任一个文件中定义外部变量,而在另一文件中用件中用extern对对该变量该变量作外部变量申明作外部变量申明第63页7.5.3 7.5.3 作用域和生存期小结作用域和生存期小结作用域和生存期小结作用域和生存期小结对一个变量属性能够从两个方面分析,对一个变量属性能够从两个方面分析,一是变量作用域,一是变量生存期。一是变量作用域,一是变量生存期。前者是从空间角度,后者是从时间角度。前者是从空间角度,后者是从时间角度。二者有联络但不是同一回事二者有联络但不是同一回事P195第64页

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服