清华大学C语言谭浩强第5章.ppt_第1页
清华大学C语言谭浩强第5章.ppt_第2页
清华大学C语言谭浩强第5章.ppt_第3页
清华大学C语言谭浩强第5章.ppt_第4页
清华大学C语言谭浩强第5章.ppt_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章函数,第5章函数,5.1 程序的模块结构 5.2 函数的分类 5.3 函数的定义和调用 5.4 函数间的参数传递 5.5 函数的嵌套与递归 5.6 系统函数 5.7 变量的存储类别、作用域、生存期,5.1 C程序的模块结构,5.1.1 C程序的模块化结构概念 5.1.2 函数的概述,5.1.1 C程序的模块化结构概念,C语言使用函数来支持模块化程序设计。 一个C程序由一个具有固定名称main()的主函数和若干个以标识符命名的其他函数组成。 通常用main()函数描述程序的总体框架,其他函数则完成某种特定的子功能。 C函数是一种独立性很强的程序模块,所有的函数都处于平等地位,不存在从属关系,即在程序运行时,任何函数都可以调用其他函数,又可以被其他函数调用(主函数除外),甚至还可以自我调用(主函数除外)。,5.1.2 函数的概述,函数本质上是一个完成特定功能的段程序,该段程序可以被其他函数调用。 除了主函数之外,其他的函数是不能独立运行的。,例5.1一个简单函数调用的例子: #include main() hello(); /* 调用hello函数*/ hello() /* hello函数 */ printf (“Hello,human n“); ,程序的运行结果如下: Hello,human,5.2 函数的分类,1. 从函数定义的角度进行分类 2. 从函数形式的角度进行分类 3. 从函数的作用范围进行分类 4. 从有无返回值的角度进行分类,1.从函数定义的角度进行分类,从函数定义的角度看,函数可分为用户函数和系统函数两种。 (1)用户函数:是用户按需要编写的函数。 (2)系统函数:由语言系统提供,用户无须定义,也不必在程序中作类型说明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。,2.从函数形式的角度进行分类,从函数形式上来看,可以将函数分为无参函数和有参函数两种。 (1)无参函数:无参函数即在函数定义、函数说明及函数调用中均不带参数。 (2)有参函数:有参函数也称为带参函数。在函数定义及函数说明时都有参数,称为形式参数(简称为形参)。,3.从函数的作用范围进行分类,如果从函数起作用的范围来分,又可以将函数分为外部函数和内部函数。 (1)外部函数:可以被任何编译单位调用的函数称为外部函数。 (2)内部函数:只能在本编译单位中被调用的函数称为内部函数。,4.从有无返回值的角度进行分类,从有无返回值的角度看,又可把函数分为有返回值函数和无返回值函数两种。 (1)有返回值函数:有返回值函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。 (2)无返回值函数:无返回值函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。,应该指出的是;在语言中,所有的函数定义,包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。 但是函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数。 函数还可以自己调用自己,称为递归调用。 main函数是主函数,它可以调用其他函数,而不允许被其他函数调用。 程序的执行总是从main函数开始,完成对其他函数的调用后再返回到main函数,最后由main函数结束整个程序。 一个源程序必须有且只能有一个主函数main。,5.3函数的定义和调用,5.3.1函数的说明 5.3.2函数的定义 5.3.3有参函数和无参函数 5.3.4函数的调用,5.3.1函数的说明,函数说明的一般形式为: 函数类型 函数名(数据类型 形式参数1, 数据类型 形式参数2,数据类型 形式参数n); 其中:函数类型是该函数返回值的数据类型,可以是整型、浮点型、字符型以及无值型(表示函数没有返回值)等,也可以是随后将要学习的指针型。 例如: int sql1(int m,int n,char c); /*说明一个整型函数*/ float sum(); /*说明一个浮点型函数*/ void stu(int n); /*说明一个无返回值的函数*/,5.3.2函数的定义,1.现代格式 2.传统格式,1.现代格式,函数的类型说明 函数名(带有类型说明的参数表) 函数体; ,2.传统格式,函数的类型说明 函数名(不带类型说明的参数表) 参数的类型说明; 函数体; ,1)函数名,函数名是编译系统识别函数的依据,除了main()函数有固定名称外,其他函数由用户按标识符的规则自行命名。 函数名与其后的圆括号之间不能留空格,C编译系统依据一个标识符后有没有圆括号来判定它是不是函数。 和数组名一样,函数名也是一个常数,代表该段程序代码在内存中的首地址,也叫函数入口地址。,2)函数的形式参数,函数的形式参数也称形参、虚参,被放在函数名后面的圆括号中,用来建立函数之间的数据联系。 当一个函数被调用时,形参接收来自调用函数的实在参数(也称实参或实元),实现函数与函数之间的数据通信,称为虚实结合或哑实结合。 形式参数可以是变量、数组、指针,也可以是函数等。,当形式参数有多个时,相互之间用逗号隔开。 函数名后面的圆括号中可以是空白或void,这种函数称为无参函数。 例如: float sub(void) 或 float sub(),3)函数的返回值,有的函数在运行结束时,要将运算结果返回到调用函数,称为函数的返回值。 函数的返回值是由return语句完成的,其中,作为返回值的变量或表达式可以用圆括号括住,也可以省略圆括号。 有的函数不需要向调用函数返回值,可以用不带表达式的return作为函数的逻辑结尾。 也可以不用return,因为C语言规定,当被调用函数执行到最后一个右花括号时也能将控制权交给调用函数。,4)函数的数据类型,函数的数据类型指的是该函数返回值的类型,可以是char、int、float、double、指针等。 如果省略函数的数据类型,则默认为int型。 无返回值的函数可以定义为无值类型。 在传统格式中,定义无值类型时,函数名前不加任何关键字;在现代格式中,则显式地加上关键字void。例如: void print(foat x,foat y) void input(void),5)函数的存储类型,函数的存储类型用来表征该函数能否被其他程序文件中的函数调用。 当一个程序文件中的函数允许被另一个程序文件中的函数调用时,可以将它定义成extern型,否则,就要定义成static型。 如果在函数定义时缺省存储类型,则默认为extern。,6)函数体,函数体是函数实现特定处理功能的语句集合,其形式与main函数完全相同。 C语言允许一个函数调用另一个函数,但不允许在一个函数体内再定义另一个函数。,5.3.3有参函数和无参函数,1.有参函数的定义 2.无参函数的定义,1.有参函数的定义,有参函数定义的一般形式为: 类型标识符 函数名(数据类型 形式参数1, 数据类型 形式参数2,数据类型 形式参数n) 函数体 在进行函数调用时,主调函数将实际参数传递给形式参数。,例5.2定义一个函数,该函数的功能是求出三个数中的最大数。 int max(int a, int b,int c) int max; max=a; if(ab) max=b; if(maxc) max=c; return(max); 在程序中,一个函数的定义可以放在任意位置,既可放在主函数main之前,也可放在main之后。 例如下面所示的程序是将max函数放在main之前。,#include int max(int a, int b,int c) int max=a; if(ab) max=b; if(maxc)max=c; return(max); main() int max(int a,int b,int c); int z,m,n,y; printf(“input three numbers:n“); scanf(“%d%d%d“, ,程序的运行情况为: input three number: 23 1 78 The max is 78,2.无参函数的定义,无参函数定义的一般形式为: 类型标识符 函数名( ) 函数体 其中:类型标识符和函数名称为函数头。类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。函数名是由用户定义的标识符。, 中的内容称为函数体。 在很多情况下不要求无参函数有返回值,此时的函数类型符可以写为void。 例如: void Hello( ) printf(“Hello humann“); Hello函数是一个无参函数,当该函数被其他函数调用时,输出:“Hello human”字符串。,5.3.4 函数的调用,1. 函数的简单调用 2. 调用的方式,1. 函数的简单调用,C语言在调用函数时直接使用函数名和实参,函数调用的一般形式为: 被调用函数名(参数表达式1,参数表达式2,参数表达式n); 其中,参数前不加数据类型说明,参数表达式可以是常量、变量或表达式。 各个参数表达式之间用逗号分割。 参数表达式的个数及数据类型与该函数定义时形式参数的个数、数据类型应相匹配。,当被调用函数是无参函数时,函数名后面的括号不要省略。 使用C语言的库函数就是函数简单调用的方法。例如: main() printf(“*n“); 上述程序在main()函数中调用输出函数printf来输出一行星号。,2.调用的方式,1)函数表达式 2)函数语句 3)函数实参,1)函数表达式,函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数有返回值。 例如: z=max(x,y)*8; 其中,函数max是赋值表达式的一部分,它的值乘以8后再赋予变量z。,2)函数语句,函数调用的一般形式加上分号即构成函数语句。 例如: printf(“%d“,m); max(x,y); 等都是以函数语句的方式调用函数。,3)函数实参,函数作为另一个函数调用的实际参数出现。 这种情况是把该函数的返回值作为实参传递给调用函数,因此要求该函数必须有返回值。 例如: printf(“%d“,max(m,n); 上述语句是把max函数的返回值又作为printf函数的实参来使用。,在函数调用时,需要对被调用函数进行说明。对函数进行说明时需要注意: (1)在调用系统函数时,需要用包含命令#include“头文件名.h”将定义系统函数的库文件包含在本程序中,有关包含命令的相关知识在后面的章节中将详细介绍。 (2)如果调用函数和被调用函数在一个编译单元中,则在书写顺序上被调用函数比调用函数先出现;或者被调用函数虽然在调用函数之后出现,而被调用函数的类型是整型或字符型,可以不对被调用函数加以说明。 除了上述两种情况以外,都要对被调用函数加以说明。,函数说明的位置一般在调用函数的函数体开头的数据说明语句中,说明的格式为: 数据类型 被调用函数名(); (3)如果被调用函数和调用函数不在一个编译单元,则需要在定义函数的编译单元中用下列方式将被调用函数定义成外部函数: extern 数据类型 函数名(形式参数表); 同时在主调用函数的函数体中,或所在编译单元的开头将要调用的函数说明成“外部函数”。 具体的说明语句格式为: extern 数据类型 被调函数名();,例5.3编写程序求四个整数的最大值。其中四个整数由键盘输入。 #include int max(int a,int b,int c); main() /* 主函数 */ int x,y,z,m,n; puts(“please input four numbers:n“); scanf(“%d,%d,%d,%d“, /*等待任意键*/ ,int max(int a, int b,int c) /* 定义求3个整数中最大值的函数 */ int max; max=a; if(ab) max=b; if(maxc) max=c; return(max); ,上述程序的运行情况为: Please input four numbers: 3,1,7,2 max=7,5.4函数间的参数传递,5.4.1函数的参数和值 5.4.2用数组作为函数参数进行传递 5.4.3参数传递举例,5.4.1函数的参数和值,1.形参和实参的概念 2.形参和实参的特点 3.用return语句返回函数的值,1.形参和实参的概念,形参出现在函数定义中,实参出现在主调函数中。 发生函数调用时,主调函数把实参的值传送给被调函数的形参,从而实现主调函数向被调函数的数据传送。,例5.4 求m个自然数之和。 #include int sum(int m) /*求和函数sum的定义*/ int i; for(i=m-1;i=1;i-) m=m+i; printf(“sum=%dn“,m); main() int m; printf(“please input number:n“); scanf(“%d“, ,上述程序运行的结果为: please input number: 200 m=20100 m=200,2.形参和实参的特点,(1)实参可以是常量、变量、表达式、函数等。无论定义的实参是何种类型,在进行函数调用时,它们都必须具有确定的值,以便程序在运行时把这些值传送给形参。 (2)形参变量只有在被调用时系统才为其分配内存单元,在调用结束后,随即释放所分配的内存单元。 (3)函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参。 (4)实参和形参在数量上、类型上、顺序上应严格一致。,3.用return语句返回函数的值,函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。 对函数的返回值归纳起来有以下几点说明: (1)要想返回函数的值,只能通过return语句来实现。return 语句的一般形式为: return 表达式; 或者为: return(表达式); return语句的功能是计算表达式的值,并返回给主调函数。,说明:在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。 (2)函数值为整型时,在函数定义时可以省去类型说明。 (3)函数值的类型和函数定义中说明的函数的类型应保持一致。 (4)不返回函数值的函数,可以明确定义为“空类型”,空类型的说明符为“void”。例如: void m(int n) ,5.4.2用数组作为函数参数进行传递,数组用作函数参数有两种形式: 一种是把数组元素作为实参使用; 另一种是把数组名作为函数的形参和实参使用。 当数组名作为实参向被调用函数传递时,只传递数组的地址,而不是将整个数组元素都复制到函数中去。即,用数组名作为实参调用子函数,调用时指向该数组第一个元素的指针被传递给了子函数。,例5.5数组名作为函数参数应用举例。 #include void xs(int *n); int main() int m10, i; for(i=0; i10; i+) mi=i; xs(m); /*按指针方式传递数组*/ void xs(int *n) int j; for(j=0; j10; j+) printf(“%3d“, *(n+); printf(“n“); ,程序的运行结果为: 0 1 2 3 4 5 6 7 8 9,5.4.3参数传递举例,1.实例一 2.实例二,1.实例一,定义一个函数index(),其中包含两个形参:一个字符型,另一个是字符串,该函数的返回值为整数。 函数的功能是计算字符型数据在字符串中出现的次数,并将出现的次数作为该函数的返回值。 要求编写该函数,同时编写主函数调用该函数。,#include int index(char c,char str); /*函数说明*/ void main() char str110,c; puts(“nPlease enter a string:“); gets(str1); /*输入一个字符串*/ puts(“nPlease enter a char you want to look for:“); c=getchar(); /*输入一个字符*/ printf(“nThere are %d characters %c in string %s“,index(c,str1),c,str1); /*调用函数并输出结果*/ int index(char c,char str) /*函数定义*/ int i,count; count=0; /*计数器清0*/ i=0;,while(stri!=0) /*字符串未结束*/ if(stri=c) count+; /*当前字符为C,计数器加1*/ i+; return count; /*返回计数器的值*/ ,程序的运行情况为: Please enter a string: helloworld Please enter a char you want to look for:l There are 3 characters l in string helloworld,2.实例二,编写一个函数输出如下图案。用参数n控制输出的行数,参数值的取值范围是19,超过这个范围,函数不做任何输出,返回整数0; 否则,输出如下所示的图案后返回整数1。编写该函数,并编写主函数调用该函数。,1 222 33333 4444444 555555555 ,#include int print(int n) ; main() int i,n; printf(“nPlease enter 1 integer:“); scanf(“%d“, /*输出数字*/,printf(“n“); return 1; /*参数正确返回1*/ else return 0; /*参数错误返回0*/ ,程序的运行情况为 Please enter 1 integer:9 1 222 33333 4444444 555555555 66666666666 7777777777777 888888888888888 99999999999999999 The value of print is 1! Please enter 1 integer:12 Error data! The value of print is 0!,5.5函数的嵌套与递归,5.5.1函数的嵌套 5.5.2函数的递归,5.5.1函数的嵌套,语言允许函数的嵌套调用,即在被调函数中又调用其他函数。 图5-2所示为两层函数嵌套的调用示例。,5.5.2函数的递归,所谓递归就是在调用一个函数的过程中又出现直接或间接地调用该函数本身。 含有直接或间接调用自己的函数称为递归函数。 例如: int test(int n) int x; int m=0; m=test(x); return(m); ,上述两个程序在执行过程中,fun1()中调用fun2(),而fun2()中又调用fun1(),这种情况的递归调用称为间接调用。,和 int fun2(int y) int z,n; n=fun1(z) ,又例如: int fun1(int x) int y,m; m=fun2(y) ,例5.6Hanoi塔问题 一块板上有三根针分别是A针、B针、C针。A针上套有64个大小不等的圆盘,大的在下,小的在上。 要把这64个圆盘从A针移动到C针上,要求:每次只能移动一个圆盘,移动可以借助B针进行; 但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。请问该怎样移动?,分析:假设现在A针上有m个盘子。 如果m=1,则直接将圆盘从A针移动到C针即可。 如果m=2,则需要三个步骤来进行移动: 第一步、首先将A针上的m-1(此时m-1等于1)个圆盘移到B针上; 第二步、然后再将A针上的一个圆盘移到C针上; 第三步、最后将B针上的m-1(等于1)个圆盘移到C针上,这样就完成了两个盘子的移动。 如果m2,则将m个盘子从A针移动到C针时,移动的过程可以分解为三个步骤: 第一步、把A针上的m-1个圆盘移到B针上; 第二步、把A针上的一个圆盘移到C针上; 第三步、把B针上的m-1个圆盘移到C针上;其中第一步和第三步是用同样的方法来实现。,下面是实现该问题的递归算法: move(int m,int x,int y,int z) if(m=1) printf(“%c-%cn“,x,z); else move(m-1,x,z,y); printf(“%c-%cn“,x,z); move(m-1,y,x,z); main() int h; printf(“nPlease input number:n“); scanf(“%d“, ,现在来运行程序,当m=3 时程序运行的结果为: input number: 3 the step to moving 3 disks: a-c a-b c-b a-c b-a b-c a-c,5.6系统函数,5.6.1常用的数学函数 5.6.2字符函数 5.6.3其他函数,5.6.1常用的数学函数,1.求整数的绝对值 2.求余弦函数 3.求指数函数(e的x次方) 4.取长整型绝对值 5.求对数函数 6.指数函数(x的y次方) 7.求正弦函数 8.计算平方根函数 9.求正切函数,1.求整数的绝对值,【函数名】 abs 【用 法】 int abs(int i); 例5.7 #include #include int main() int number = -2541; printf(“number is: %d absolute value is: %dn“, number, abs(number); return 0; ,【运行结果】 number is: -2541 absolute value is: 2541,2.求余弦函数,【函数名】 cos 【用 法】 double cos(double x); 例5.8 #include #include int main() double ret, x = 0.6; ret = cos(x); printf(“The cosine of %lf is %lfn“, x, ret); return 0; ,【运行结果】 The cosine of 0.600000 is 0.825336,3.求指数函数(e的x次方),【函数名】 exp 【用 法】 double exp(double x); 例5.9 #include #include int main() double ret,double x = 8.0; ret = exp(x); printf(“e raised to the power of %lf (e %lf) = %lfn“,x, x, ret); return 0; ,【运行结果】 e raised to the power of 8.000000 (e 8.000000) = 2980.957987,4.取长整型绝对值,【函数名】 labs 【用 法】 long labs(long n); 例5.10 #include #include int main() long ret; long x = -12345678L; ret= labs(x); printf(“number: %ld abs value: %ldn“, x, ret); return 0; ,【运行结果】 number: -12345678 abs value:12345678,5.求对数函数,【函数名】 log 【用 法】 double log(double x); 例5.10 #include #include int main() double ret; double x = 5.8928; ret = log(x); printf(“The natural log of %lf is %lfn“, x, ret); return 0; ,【运行结果】 The natural log of 5.892800 is 1.773731,6.指数函数(x的y次方),【函数名】 pow 【用 法】 double pow(double x, double y); 例5.11 #include #include int main() double x = 3.0, y = 4.0; printf(“%lf raised to %lf is %lfn“, x, y, pow(x, y); return 0; ,【运行结果】 3.000000 raised to 4.000000 is 81.000000,7.求正弦函数,【函数名】 sin 【用 法】 double sin(double x); 例5.12 #include #include int main() double ret, x = 0.5; ret = sin(x); printf(“The sin() of %lf is %lfn“, x, ret); return 0; ,【运行结果】 The sin() of 0.500000 is 0.479426,8.计算平方根函数,【函数名】 sqrt 【用 法】 double sqrt(double x); 例5.14 #include #include int main() double x = 9.0, ret; ret = sqrt(x); printf(“The square root of %lf is %lfn“, x, ret); return 0; ,【运行结果】 The square root of 9.000000 is 3.000000,9.求正切函数,【函数名】 tan 【用 法】 double tan(double x); 例5.15 #include #include int main() double ret, x; x = 0.5; ret = tan(x); printf(“The tan of %lf is %lfn“, x, ret); return 0; ,【运行结果】 The tan of 0.500000 is 0.546302,5.6.2字符函数,1.整数转换为字符串函数 2.字符转换成小写字母函数 3.字符转换成大写字母函数,1.整数转换为字符串函数,【函数名】 itoa 【用 法】 char *itoa(int value, char *string, int radix); 例5.16 #include #include int main() int number = 23516; char string30; itoa(number, string, 10); printf(“integer = %d string = %sn“, number, string); return 0; ,【运行结果】 integer = 23516 string =23516,2.字符转换成小写字母函数,【函数名】 tolower 【用 法】 int tolower(int c); 例5.17 #include #include #include int main(void) int length, i; char *string = “THIS IS A STRING“;,length = strlen(string); for (i=0; ilength; i+) stringi = tolower(stringi); printf(“%sn“,string); return 0; ,【运行结果】 this is a string,3.字符转换成大写字母函数,【函数名】 toupper 【用 法】 int toupper(int c); 例5.18 #include #include #include int main(void) int length, i;,char *string = “this is a string“; length = strlen(string); for (i=0; ilength; i+) stringi = toupper(stringi); printf(“%sn“,string); return 0; ,【运行结果】 THIS IS A STRING,5.6.3其他函数,1.取得当前系统时间函数 2.随机数发生器函数,1.取得当前系统时间函数,【函数名】 gettime 【用 法】 void gettime(struct time *timep); 例5.19 #include #include int main() struct time t; gettime( ,【运行结果】 (运行程序时的系统时间) The current time is:9:39:12.87,2.随机数发生器函数,【函数名】 rand 【用 法】 void rand(void); 例5.20 #include #include int main() int i; printf(“Ten random numbers from 0 to 99n“);,for(i=0; i10; i+) printf(“%dn“, rand()%100); return 0; ,【运行结果】 Ten random numbers from 0 to 99 46 30 82 90 56 17 95 15 48 26,注意:由于rand()函数返回值为随机数,所以上述程序每次执行的结果不相同。,5.7变量的存储类别、作用域、生存期,5.7.1变量的作用域 5.7.2变量的存储类型和生存期 5.7.3变量在使用中的注意事项,5.7.1变量的作用域,1.全局变量 2.局部变量,1.全局变量,在所有函数之外定义的变量称为全局变量。 全局变量的作用域为:从定义开始一直到程序结束。,2.局部变量,在函数(包括主函数)内部或复合语句的说明部分所定义的变量称为局部变量。 局部变量的作用域仅在它所定义的函数体或复合语句之内。,5.7.2变量的存储类型和生存期,1局部变量的存储类型对函数调用的影响 2全局变量的存储类型对函数调用的影响,1.局部变量的存储类型对函数调用的影响,1)auto及register型变量的初始化 2)auto及register型变量的生命期 3)static型变量的初始化和生命期,1)auto及register型变量的初始化,auto及register型变量的初始化是在程序执行期间完成的。 它们所在的函数或程序段每次被调用时,初始化都要进行一次。 例5.21auto型变量的初始化举例。 #include found() auto int x=3; x+; return x; ,main() int i; for(i=0;i3;i+) printf(“%d “,found(); 因为found()函数每次被调用时,其中的变量x都要被重新初始化为3;因此程序运行后的输出结果为:,4 4 4,2)auto及register型变量的生命期,auto型或register型变量的值只在它们所在的函数或程序段执行期间才被保留。一旦它们所在的函数或程序段执行结束,其值就不再有效。 例5.22auto型变量生存期举例。 #include found() auto int x=3; int x+; return x; ,main() int x=6,i; for (i=0;i3;i+) printf(“%dn“,found(); 上述程序在编译时将报错。 因为在found()中的x被定义在内层花括号中,在离开内层花括号后,x就变成未定义,因而不能引用。,3)static型变量的初始化和生命期,static型变量的初始化是在编译期间完成的,只进行一次;它的生存期和程序的生存期相同。 因此,当它所在的函数多次被调用时,将不再进行初始化,每次调用结束后,其值也将被保留。 例5.23

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论