1、完整版ppt17.1 函数是什么函数是什么7.2 函数的定义和调用函数的定义和调用7.3 函数的嵌套调用和递归调用函数的嵌套调用和递归调用7.4 数组作为函数参数数组作为函数参数7.5 变量的作用域和生存期变量的作用域和生存期P168完整版ppt27.1 函数是什么函数是什么如果程序的功能比较多,规模比较大,如果程序的功能比较多,规模比较大,把所有的程序代码都写在一个主函数把所有的程序代码都写在一个主函数中,就会使主函数变得庞杂、头绪不中,就会使主函数变得庞杂、头绪不清,使阅读和维护程序变得困难。清,使阅读和维护程序变得困难。P168完整版ppt3有时程序中要多次实现某一功能,就有时程序中要多
2、次实现某一功能,就需要多次重复编写实现此功能的程序需要多次重复编写实现此功能的程序代码。这使程序冗长,不精炼。代码。这使程序冗长,不精炼。7.1 函数是什么函数是什么P168完整版ppt4采用采用“组装组装”的办法简化程序设计过程的办法简化程序设计过程事先编好一批函数实现各种不同的功能事先编好一批函数实现各种不同的功能用到什么用到什么函数函数就直接装就直接装使用使用就可以就可以这就是这就是模块化的程序设计模块化的程序设计7.1 函数是什么函数是什么P168完整版ppt5函数就是功能函数就是功能(Function)每一个函数用来实现一个特定的功能每一个函数用来实现一个特定的功能函数的名字应反映其
3、代表的功能函数的名字应反映其代表的功能7.1 函数是什么函数是什么P168完整版ppt6在设计一个较大的程序时,往往把它分在设计一个较大的程序时,往往把它分为若干个程序模块,每一个模块包括一为若干个程序模块,每一个模块包括一个或多个函数,每个函数实现一个特定个或多个函数,每个函数实现一个特定的功能。的功能。7.1 函数是什么函数是什么P168完整版ppt7一个程序可由一个主函数和若干个其一个程序可由一个主函数和若干个其他函数构成。由主函数调用其他函数,他函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次可以被一个
4、或多个函数调用任意多次7.1 函数是什么函数是什么P168完整版ppt87.1 函数是什么函数是什么P168mainabcfghdeie完整版ppt9除了可以使用库函数外,除了可以使用库函数外,还可以还可以编写一编写一些些本领域或本单位常用到一些专用函数,本领域或本单位常用到一些专用函数,供本领域或本单位的人员使用供本领域或本单位的人员使用。、。、在程序设计中要善于利用函数,可以减在程序设计中要善于利用函数,可以减少各人重复编写程序段的工作量,同时少各人重复编写程序段的工作量,同时可以方便地实现模块化的程序设计。可以方便地实现模块化的程序设计。7.1 函数是什么函数是什么P168完整版ppt1
5、0说明:说明:(1)一个程序由一个或多个程序模块组成一个程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对于较每一个程序模块作为一个源程序文件。对于较大的程序,一般不把所有内容全放在一个源程大的程序,一般不把所有内容全放在一个源程序文件中,而是将它们分别放在若干个源文件序文件中,而是将它们分别放在若干个源文件中,由若干个源程序文件组成一个中,由若干个源程序文件组成一个C程序。这程序。这样便于分别编写、分别编译,提高调试效率。样便于分别编写、分别编译,提高调试效率。一个源程序文件可以为多个一个源程序文件可以为多个C程序所调用。程序所调用。完整版ppt11说明:说明:(2)一个源程
6、序文件由一个或多个函数以及其一个源程序文件由一个或多个函数以及其他有关内容组成。一个源程序文件是一个编译他有关内容组成。一个源程序文件是一个编译单位,在程序单位,在程序编译时是以源程序文件为单位进编译时是以源程序文件为单位进行编译行编译的,而不是以函数为单位进行编译的。的,而不是以函数为单位进行编译的。完整版ppt12说明:说明:(3)不论不论main函数出现在什么位置,函数出现在什么位置,总是从总是从main函数开始执行函数开始执行。如。如果果在在main函数中调函数中调用其他函数,在调用后流程返回到用其他函数,在调用后流程返回到main函数函数,在,在main函数中结束整个程序的运行。函数
7、中结束整个程序的运行。完整版ppt13说明:说明:(4)所有函数都是平行的,即在定义函数时是所有函数都是平行的,即在定义函数时是分别进行的,是分别进行的,是互相独立的互相独立的。一个函数并不从。一个函数并不从属于另一个函数,即函数属于另一个函数,即函数不能嵌套定义不能嵌套定义。函数。函数间可以互相调用,但不能调用间可以互相调用,但不能调用main函数。函数。main函数是函数是由由系统调用的。系统调用的。完整版ppt14说明:说明:(5)从用户使用的角度看,函数有两种。从用户使用的角度看,函数有两种。u库函数库函数,它是由系统提供的,用户不必自己定,它是由系统提供的,用户不必自己定义而直接使用
8、它们。应该说明,不同的义而直接使用它们。应该说明,不同的C语言语言编译系统提供的库函数的数量和功能会有一些编译系统提供的库函数的数量和功能会有一些不同,当然许多基本的函数是共同的。不同,当然许多基本的函数是共同的。u用户用户自己自己定义的函数定义的函数。它是用以解决用户专门。它是用以解决用户专门需要的函数。需要的函数。完整版ppt15说明:说明:(6)从函数的形式看,函数分两类。从函数的形式看,函数分两类。无参函数无参函数。函数没有参数,一般用来执行固。函数没有参数,一般用来执行固定的一组操作。无参函数可以带回或不带回函定的一组操作。无参函数可以带回或不带回函数值,但一般以不带回函数值的居多。
9、数值,但一般以不带回函数值的居多。有参函数有参函数。在调用函数时,要给出实参。主。在调用函数时,要给出实参。主调函数在调用被调用函数时,通过参数向被调调函数在调用被调用函数时,通过参数向被调用函数传递数据,一般情况下,执行被调用函用函数传递数据,一般情况下,执行被调用函数时会得到一个函数值,供主调函数使用。数时会得到一个函数值,供主调函数使用。完整版ppt167.2 函数的定义和调用函数的定义和调用7.2.1 为什么要定义函数为什么要定义函数7.2.2 函数定义函数定义7.2.3 函数的调用函数的调用7.2.4 对被调用函数的声明和函数原型对被调用函数的声明和函数原型P170完整版ppt17C
10、语言要求,在程序中用到的所有函数,语言要求,在程序中用到的所有函数,必须必须“先定义,后使用先定义,后使用”指定指定函数函数名字名字、函数、函数返回值类型返回值类型、函数、函数实现的实现的功能功能以及以及参数的个数与类型参数的个数与类型,将,将这些信息通知编译系统。这些信息通知编译系统。7.2.1 为什么要定义函数为什么要定义函数P170完整版ppt18指定函数的名字,以便以后按名调用指定函数的名字,以便以后按名调用指定函数类型,即函数返回值的类型指定函数类型,即函数返回值的类型指定函数参数的名字和类型,以便在调指定函数参数的名字和类型,以便在调用函数时向它们传递数据用函数时向它们传递数据指定
11、函数的功能。这是最重要的,这是指定函数的功能。这是最重要的,这是在函数体中解决的在函数体中解决的7.2.1 为什么要定义函数为什么要定义函数P170完整版ppt19如果程序中要调用如果程序中要调用库函数库函数,只需用,只需用#include指令把有关的头文件包含到指令把有关的头文件包含到本文件模块中即可。本文件模块中即可。如果想使用库函数中没有的函数,需要如果想使用库函数中没有的函数,需要程序设计者在程序中程序设计者在程序中自己定义自己定义。7.2.1 为什么要定义函数为什么要定义函数P170完整版ppt207.2.2 函数定义函数定义1.怎样定义无参函数怎样定义无参函数函数名后面圆括号中空的
12、,没有参数函数名后面圆括号中空的,没有参数定义无参函数的一般形式为定义无参函数的一般形式为:类型名类型名 函数名()函数名()函数体函数体 P171包括声明部分和包括声明部分和语句部分语句部分指定函数指定函数值的类型值的类型完整版ppt217.2.2 函数定义函数定义1.怎样定义无参函数怎样定义无参函数函数名后面圆括号中空的,没有参数函数名后面圆括号中空的,没有参数定义无参函数的一般形式为定义无参函数的一般形式为:类型名类型名 函数名()函数名()函数体函数体 P171表示不需要表示不需要带回函数值带回函数值void完整版ppt227.2.2 函数定义函数定义2.怎样定义有参函数怎样定义有参函
13、数定义有参函数的一般形式为定义有参函数的一般形式为:类型标识符类型标识符 函数名(形式参数表列)函数名(形式参数表列)函数体函数体 P171完整版ppt237.2.2 函数定义函数定义2.怎样定义有参函数怎样定义有参函数 int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);P171求求x和和y二者二者中大者中大者完整版ppt247.2.3 函数的调用函数的调用1.调用无参函数的形式调用无参函数的形式 函数名函数名()如如print_star()2.调用无参函数的形式调用无参函数的形式 函数名(实参表列)函数名(实参表列)如如max(a,
14、b)P172如果有多个如果有多个参数,用逗参数,用逗号隔开号隔开完整版ppt25例例7.2 输入两个整数,输出二者中的输入两个整数,输出二者中的大者。要求在主函数中输入两个整大者。要求在主函数中输入两个整数,用一个函数数,用一个函数max求出其中的大求出其中的大者,并在主函数中输出此值。者,并在主函数中输出此值。完整版ppt26#include int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);参数类型参数类型函数类型函数类型定义函数定义函数定义函数内定义函数内使用的变量使用的变量完整版ppt27 c=max(a,b);(main函数
15、)函数)int max(int x,int y)(max函数)函数)int z;z=xy?x:y;return(z);完整版ppt28#include void main()int max(int x,int y);int a,b,c;printf(”please input two number:”);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max is%dn”,c);int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);形式参数形式参数实际参数实际参数完整版ppt29函数调用的函数调用的过程过程
16、:在定义函数中指定的形参,在未出现函数在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。调用时,它们并不占内存中的存储单元。在发生函数调用时,函数在发生函数调用时,函数max的形参被临的形参被临时分配内存单元。时分配内存单元。2a3bxy23实参实参形参形参完整版ppt30函数调用的函数调用的过程过程:2a3bxy23实参实参形参形参调用结束,形参单元被释放调用结束,形参单元被释放实参单元仍保留并维持原值,没有改变实参单元仍保留并维持原值,没有改变如果在执行一个被调用函数时,形参的值如果在执行一个被调用函数时,形参的值发生改变,不会改变主调函数的实参的值发生改变,不会改变
17、主调函数的实参的值完整版ppt31调用函数的调用函数的方式方式:按函数在程序中出现的位置来分,可以有按函数在程序中出现的位置来分,可以有以下以下3种函数调用方式种函数调用方式.函数语句函数语句调用没有返回值的函数,函数调用单独作调用没有返回值的函数,函数调用单独作为一个语句为一个语句 如例如例7.1中的中的“print_star();”完整版ppt32调用函数的调用函数的方式方式:按函数在程序中出现的位置来分,可以有按函数在程序中出现的位置来分,可以有以下以下3种函数调用方式种函数调用方式.函数表达式函数表达式函数出现在一个表达式中,这种表达式称函数出现在一个表达式中,这种表达式称为函数表达式
18、为函数表达式 如例如例7.2中的中的“c=max(a,b);”完整版ppt33调用函数的调用函数的方式方式:按函数在程序中出现的位置来分,可以有按函数在程序中出现的位置来分,可以有以下以下3种函数调用方式种函数调用方式.函数参数函数参数函数调用作为一个函数的实参函数调用作为一个函数的实参 如如printf(%d,max(a,b);完整版ppt347.2.4 对被调用函数的声明对被调用函数的声明和函数原型和函数原型P175在一个函数中调用另一个函数需要具备如在一个函数中调用另一个函数需要具备如下条件:下条件:(1)被调用函数必须是被调用函数必须是已经定义的函数已经定义的函数(是库(是库函数或用户
19、自己定义的函数)函数或用户自己定义的函数)。(2)如果使用库函数,应该在本文件开头如果使用库函数,应该在本文件开头加相加相应的应的#include指令指令。(3)如果使用自己定义的函数,而该函数的位如果使用自己定义的函数,而该函数的位置在调用它的函数后面置在调用它的函数后面,应该应该进行进行函数函数声明声明完整版ppt357.2.4 对被调用函数的声明对被调用函数的声明和函数原型和函数原型P175函数原型的一般形式有两种函数原型的一般形式有两种:如如 int max(int x,int y);int max(int,int);原型说明可以放在文件的开头,这时原型说明可以放在文件的开头,这时本本
20、文文件件中中所有函数都可以使用此函数所有函数都可以使用此函数完整版ppt367.3 函数的嵌套调用和递归调用函数的嵌套调用和递归调用P1777.3.1 函数的嵌套调用函数的嵌套调用7.3.2 函数的递归调用函数的递归调用完整版ppt377.3.1 函数的嵌套调用函数的嵌套调用调用一个函数的过程中,又调用一个函数的过程中,又可以可以调调用另一个函数用另一个函数P177完整版ppt387.3.1 函数的嵌套调用函数的嵌套调用P177main函数函数调用调用a函数函数结束结束a函数函数调用调用b函数函数b函数函数完整版ppt397.4 数组作为函数参数数组作为函数参数7.4.1 数组元素作函数实参数
21、组元素作函数实参7.4.2 数组名作函数参数数组名作函数参数P184完整版ppt407.4.1 数组元素作函数实参数组元素作函数实参 由于实参可以是表达式,而数组元素可以由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素可以是表达式的组成部分,因此数组元素可以作为函数的实参。作为函数的实参。P185完整版ppt417.4.2 数组名作函数参数数组名作函数参数P186希望在函数中处理整个数组的元素时,可希望在函数中处理整个数组的元素时,可以用数组名作为函数实参以用数组名作为函数实参注意,此时只是将数组的首元素的地址传注意,此时只是将数组的首元素的地址传递给所对应的形参,因此对应
22、的形参应当递给所对应的形参,因此对应的形参应当是指针变量是指针变量(见第见第8章章)。完整版ppt42例例7.7 有有10个学生成绩,用一个函数求全体个学生成绩,用一个函数求全体学生的平均成绩。学生的平均成绩。解题思路:解题思路:u在主函数中定义一个实型数组在主函数中定义一个实型数组score,将输入,将输入的的10个学生成绩存放在数组中个学生成绩存放在数组中u设计函数设计函数average,用来求学生平均成绩,用来求学生平均成绩u需要把数组有关信息传递给需要把数组有关信息传递给average函数函数u采取用数组名作为实参,把数组地址传给采取用数组名作为实参,把数组地址传给average函数,
23、在该函数中对数组进行处理函数,在该函数中对数组进行处理完整版ppt43#include void main()float average(float array10);float score10,aver;int i;printf(input 10 scores:n);for(i=0;i10;i+)scanf(%f,&scorei);aver=average(score);printf(average score is%5.2fn,aver);数组名作实参数组名作实参完整版ppt44float average(float array10)int i;float aver,sum=array0;
24、for(i=1;i10;i+)sum=sum+arrayi;aver=sum/10;return(aver);与与score共占同一存储单元共占同一存储单元实参、形参都是实参、形参都是float型型相当于相当于score0相当于相当于scorei完整版ppt457.5 变量的作用域和生存期变量的作用域和生存期7.5.1 变量的作用域变量的作用域-局部变量和全局变量局部变量和全局变量7.5.2 变量的存储方式和生存期变量的存储方式和生存期7.5.3 作用域和生存期的小结作用域和生存期的小结P192完整版ppt467.5.1 变量的作用域变量的作用域局部变量和全局变量局部变量和全局变量1 局部变量
25、局部变量u在函数和复合语句内定义的变量,称为内部在函数和复合语句内定义的变量,称为内部变量或变量或局部变量局部变量u只在只在本函数或复合语句内本函数或复合语句内范围内有效范围内有效(从定从定义点开始到函数或复合语句结束义点开始到函数或复合语句结束)u在此函数或复合语句以外是不能使用这些变在此函数或复合语句以外是不能使用这些变量的量的P192完整版ppt472 全局变量全局变量u一个程序可以包含一个或若干个源程序文件一个程序可以包含一个或若干个源程序文件(即程序模块即程序模块),而一个源文件可以包含一个或,而一个源文件可以包含一个或若干个函数若干个函数u在函数之外定义的变量是外部变量,也称为在函
26、数之外定义的变量是外部变量,也称为全局变量全局变量(或全程变量或全程变量)u全局变量的有效范围为从定义变量的位置开全局变量的有效范围为从定义变量的位置开始到本源文件结束,在此范围内可以为本文件始到本源文件结束,在此范围内可以为本文件中所有函数所共用中所有函数所共用完整版ppt482 全局变量全局变量u在一个函数中既可以使用本函数中的局部变在一个函数中既可以使用本函数中的局部变量,又可以使用有效的全局变量。量,又可以使用有效的全局变量。u如果在同一个源文件中,外部变量与局部变如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部量同名,则在局部变量的作用范围内,外部变量被变
27、量被“屏蔽屏蔽”了,即它不起作用,此时局了,即它不起作用,此时局部变量是有效的。部变量是有效的。完整版ppt497.5.2 变量的存储方式和生存期变量的存储方式和生存期变量的变量的生存期生存期:变量值存在的时间变量值存在的时间变量的两种变量的两种存储方式存储方式:静态存储方式和:静态存储方式和动态存储方式动态存储方式u静态静态存储方式是指在程序运行期间由系统分存储方式是指在程序运行期间由系统分配固定的存储空间的方式配固定的存储空间的方式u动态动态存储方式是在程序运行期间根据需要进存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式行动态的分配存储空间的方式P195完整版ppt507.5
28、.2 变量的存储方式和生存期变量的存储方式和生存期全局变量采用静态存储方式全局变量采用静态存储方式,在程序开,在程序开始执行时给全局变量分配存储区,程序始执行时给全局变量分配存储区,程序执行完毕释放。在程序执行过程中它们执行完毕释放。在程序执行过程中它们占据固定的存储单元,而不是动态地进占据固定的存储单元,而不是动态地进行分配和释放。行分配和释放。P195完整版ppt517.5.2 变量的存储方式和生存期变量的存储方式和生存期在函数中定义的变量,在函数调用开始在函数中定义的变量,在函数调用开始时分配动态存储空间,函数结束时释放时分配动态存储空间,函数结束时释放这些空间。在程序执行过程中,这种分
29、这些空间。在程序执行过程中,这种分配和释放是动态的。配和释放是动态的。P195完整版ppt527.5.2 变量的存储方式和生存期变量的存储方式和生存期每一个变量和函数都有两个属性:每一个变量和函数都有两个属性:数据数据类型类型和数据的和数据的存储类别存储类别u数据类型数据类型,如整型、浮点型等,如整型、浮点型等u存储类别存储类别指的是数据在内存中存储的方式指的是数据在内存中存储的方式(如静态存储和动态存储如静态存储和动态存储)P195完整版ppt531.auto声明自动变量声明自动变量(auto变量变量)u函数中的形参和在函数中定义的变量函数中的形参和在函数中定义的变量(包括包括在复合语句中定
30、义的变量在复合语句中定义的变量),都属于此类,都属于此类u在调用该函数时,系统给这些变量分配存储在调用该函数时,系统给这些变量分配存储空间,在函数调用结束时就自动释放这些存空间,在函数调用结束时就自动释放这些存储空间。因此这类局部变量称为储空间。因此这类局部变量称为自动自动变量。变量。u自动变量用关键字自动变量用关键字auto作存储类别的声明作存储类别的声明完整版ppt54int f(int a)auto int b,c=3;可以省略可以省略完整版ppt552.static声明静态变量声明静态变量以下情况需要指定以下情况需要指定static存储类别:存储类别:u希望函数中的局部变量值在函数调用
31、结束后希望函数中的局部变量值在函数调用结束后不消失而继续不消失而继续保留原值保留原值,即其占用的存储单,即其占用的存储单元不释放,在下一次该函数调用时,该变量元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。已有值,就是上一次函数调用结束时的值。这时就应用关键字这时就应用关键字static指定该局部变量为指定该局部变量为“静态局部变量静态局部变量”。完整版ppt56对静态局部变量的说明:对静态局部变量的说明:(1)静态局部变量静态局部变量属于静态存储类别,在静属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行态存储区内分配存储单元。在程序整个运行期间都期间都
32、不释放不释放。而。而自动变量自动变量(即动态局部变(即动态局部变量)属于动态存储类别,占动态存储区空间量)属于动态存储类别,占动态存储区空间而不占静态存储区空间,函数调用结束后即而不占静态存储区空间,函数调用结束后即释放释放完整版ppt57对静态局部变量的说明:对静态局部变量的说明:(2)对对静态局部变量静态局部变量是在是在编译时赋初值编译时赋初值的,的,即只赋初值一次,在程序运行时它已有初值即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。而对是保留上次函数调用结束时的值。而对自动自动变量变量赋初值
33、,不是在编译时进行的,而是在赋初值,不是在编译时进行的,而是在函数调用时进行函数调用时进行,每调用一次函数重新给一,每调用一次函数重新给一次初值,相当于执行一次赋值语句。次初值,相当于执行一次赋值语句。完整版ppt58对静态局部变量的说明:对静态局部变量的说明:(3)如在定义局部变量时不赋初值的话,则如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时对静态局部变量来说,编译时自动赋初值自动赋初值(对数值型变量)或空字符(对字符变量)(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。这是由于每次函数调值
34、是一个不确定的值。这是由于每次函数调用结束后存储单元已释放,下次调用时又重用结束后存储单元已释放,下次调用时又重新另分配存储单元,而所分配的单元中的值新另分配存储单元,而所分配的单元中的值是不可知的。是不可知的。完整版ppt59对静态局部变量的说明:对静态局部变量的说明:(4)虽然静态局部变量在函数调用结束后仍虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。因为然存在,但其他函数是不能引用它的。因为它是局部变量,只能被本函数引用,而不能它是局部变量,只能被本函数引用,而不能被其他函数引用。被其他函数引用。完整版ppt60对静态局部变量的说明:对静态局部变量的说明:(5)用静
35、态存储要多占内存(长期占用不释用静态存储要多占内存(长期占用不释放,而不能像动态存储那样一个存储单元可放,而不能像动态存储那样一个存储单元可供多个变量使用,节约内存),而且降低了供多个变量使用,节约内存),而且降低了程序的可读性,当调用次数多时往往弄不清程序的可读性,当调用次数多时往往弄不清静态局部变量的当前值是什么。因此,若非静态局部变量的当前值是什么。因此,若非必要,不要多用静态局部变量。必要,不要多用静态局部变量。完整版ppt613.register声明寄存器变量声明寄存器变量一般情况下,变量(包括静态存储方式和一般情况下,变量(包括静态存储方式和动态存储方式)的值是存放在内存中的动态存
36、储方式)的值是存放在内存中的寄存器变量寄存器变量允许将局部变量的值放在允许将局部变量的值放在CPU中的寄存器中中的寄存器中现在的计算机能够识别使用频繁的变量,现在的计算机能够识别使用频繁的变量,从而自动地将这些变量放在寄存器中,而从而自动地将这些变量放在寄存器中,而不需要程序设计者指定不需要程序设计者指定完整版ppt624.extern声明外部变量的作用范围声明外部变量的作用范围(1)在一个文件内扩展外部变量的作用域在一个文件内扩展外部变量的作用域u 如果外部变量不在文件的开头定义,其有效如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件结束的作用范围只限于定义处到文件结束u
37、如果由于某种考虑,在定义点之前的函数需如果由于某种考虑,在定义点之前的函数需要引用该外部变量,则应该在引用之前用关要引用该外部变量,则应该在引用之前用关键字键字extern对该变量作对该变量作“外部变量声明外部变量声明”完整版ppt634.extern声明外部变量的作用范围声明外部变量的作用范围(2)将外部变量的作用域扩展到其他文件将外部变量的作用域扩展到其他文件u 在任一个文件中定义外部变量,而在另一文在任一个文件中定义外部变量,而在另一文件中用件中用extern对对该变量该变量作外部变量声明作外部变量声明完整版ppt647.5.3 作用域和生存期的小结作用域和生存期的小结对一个变量的属性可以从两个方面分析对一个变量的属性可以从两个方面分析,一是变量的作用域,一是变量的生存,一是变量的作用域,一是变量的生存期。期。前者是从空间的角度,后者是从时间的前者是从空间的角度,后者是从时间的角度。角度。二者有联系但不是同一回事二者有联系但不是同一回事P195此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!