版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、关于函数作用域第一张,PPT共八十九页,创作于2022年6月第6章 函数 函数的定义函数参数的值的传递函数的调用数组作为函数的参数函数与指针变量的作用域及存贮类型(指向函数的指针不要求!)本章要点第二张,PPT共八十九页,创作于2022年6月如前所述,C程序是由函数组成的。通过函数,我们可以一个较大的问题分成若干个小问题来解决,如用积木建房子。1 函数概述一、函数的分类:标准库函数:由系统提供,用户可以不必自己去编写程序段而直接调用这些函数。但必须打开相应的头文件。如printf、scanf等函数。用户自定义函数:为了实现用户的特殊需要而自编的函数。如max(int x,int y) 用户角度
2、有参函数:在调用函数时,需要进行参数传递的函数,如max(a,b);无参函数:如 getchar(); 有无参数第三张,PPT共八十九页,创作于2022年6月1无参函数的定义: 类型标识符 函数名() 声明部分; /*定义变量*/ 语句; /*执行部分*/ 2有参函数的定义: 类型标识符 函数名(形式参数说明表列) 声明部分; /*定义变量*/ 语句; /*执行部分*/ 2 函数定义和调用第四张,PPT共八十九页,创作于2022年6月函数的“类型标识符”用来说明函数的返回值的类型,通常我们称之为函数的类型。如果定义这个函数只是为了实现某个操作而不需要返回值,则应将该函数定义为无返回值类型,即v
3、oid类型。如果你定义的函数不是void类型,则意味着该函数只有一个值。此时,在该函数的结束处,应使用return语句给主调函数带回一个值。当函数执行到return语句时,立即中止本函数的执行,而返回到主调函数处,同时将相应return 语句中的值带回到主调函数。一个函数中可以有多个return语句,先执行到哪个,哪个就起作用,即执行到return语句时,程序将不再向下执行,而返回到调用它的地方。3 函数的返回值第五张,PPT共八十九页,创作于2022年6月“形参”与“实参” :在定义函数时函数名后面括号中的变量称为“形式参数”,简称“形参”;调用函数时函数名后括号中对应参数称为“实际参数”,
4、简称“实参”。如: int max( int x, int y) return (xy?x:y); 形参 void main( ) int a=1,b=4; c=max(a, b) 实参4 函数的参数传递1、形参与实参必须一一对应。(个数、类型)2、定义函数时,必须指定形式参数的类型。第六张,PPT共八十九页,创作于2022年6月函数定义举例int factor ( int n ) int s=1,k; for(k=1;k=n;k+) s=s*k; return s;“函数类型”指函数返回值的类型,也就是说,当该函数执行完成以后,得到一个什么类型的结果。若省略此项,则认为返回类型是int若函数
5、无返回值,则应定义类型为void第七张,PPT共八十九页,创作于2022年6月函数定义举例int factor ( int n ) int s=1,k; for(k=1;k=n;k+) s=s*k; return s;函数名:通常是一个标识符,在一个程序中除了主函数外其余函数的名字可以任意取,但应尽量做到见名知意。函数名后面的 “()” 必须有,表示是函数。第八张,PPT共八十九页,创作于2022年6月函数定义举例int factor ( int n ) int s=1,k; for(k=1;k=n;k+) s=s*k; return s;形参表:函数定义时的参数称为形式参数,形式参数彼此间用
6、逗号分隔。每个参数应分别指明其类型。没有形式参数的函数称为无参函数。注意无参函数名字后的圆括号不能省。第九张,PPT共八十九页,创作于2022年6月函数定义举例int factor ( int n ) int s=1,k; for(k=1;k=n;k+) s=s*k; return s;函数中所需变量的定义注:形参及函数中的变量均是在函数被调用时才为它们分配存储单元,函数调用结束后,其存储单元会被系统收回!第十张,PPT共八十九页,创作于2022年6月函数定义举例int factor ( int n ) int s=1,k; for(k=1;kb) c=1; if(a = =b) c=0; i
7、f(ay?x:y; void main( ) . c=max(a,b); 第二十一张,PPT共八十九页,创作于2022年6月 3、在调用这个函数之前对所调用个函数作一个说明,让系统知道这个函数需要的参数、类型,以及返回值的类型,这即是对该函数的声明。但是注意,对函数说明时,括号后有分号;而函数定义时则没有。如: int max(int x,int y); / - 函数的声明 void main( ) int max(int x,int y); / - 函数的声明 c=max(a,b); 主程序中对函数的调用语句 int max(int x,int y) return xy?x:y; 函数的定义
8、 (2)、对被调用函数的声明第二十二张,PPT共八十九页,创作于2022年6月函数声明可以在主调函数内,也可以在函数外。其区别在于:在函数体外部进行的声明,在本文件中的所有地方都有效,无需在主调函数内再次声明;在函数内部进行的声明,则所声明的函数只能在本函数内部使用;第二十三张,PPT共八十九页,创作于2022年6月所谓的函数的嵌套调用,就是在调用一个函数的过程中,又调用了其它函数。如在主函数中调用了a函数,而在a函数中又调用了b函数,在b函数中又调用了c函数,这就是函数的嵌套调用。其调用过程如下图所示: 6 函数的嵌套调用 main() a( ); a( ) b( ); c( ) b( )
9、c( ); 第二十四张,PPT共八十九页,创作于2022年6月main() int a=1,b; b=func1(a); printf(“%d”,b);func1(int x) int y; y=func2(x)+1; return y; 例:函数的嵌套调用func2(int x) int y; y=func3(x)+1; return y; func3(int x) int y; y=x+5; return y; 输出结果:8第二十五张,PPT共八十九页,创作于2022年6月数组元素做函数的实参,其用法与变量相同。(每个的数组元素相当于一个独立变量)。例如:7 函数与数组数组作为函数的参数,
10、可以有两种情况:例:比较两个数组中的元素,统计出a中大于对应b中元素的位置。int compare(int x,int y) int z; if(xy) z=1; else if(x=y) z=0; else z=-1; return z; void main( )int a10=,b10=, i , t; for(i=0;i0)printf(“a%db%d ”,i,i); 输出: a2b2 0 1 2 3a u v w b w v u 第二十六张,PPT共八十九页,创作于2022年6月数组名作为函数参数:前面我们已经知道:在C中,数组名代表的是数组的起始地址。因此,当数组名作为函数的参数时,
11、所传递的也是数组的起始地址。8 数组作为函数的参数例:自编字符串复制函数strcopy strcopy(char str1130,char str2230) int i; for(i=0;str22i!=0;i+) str11i=str22i; str11i=0; void main( ) char str130; char str230=”abcde”; printf(“%s”,str1); strcopy(str1,str2); printf(“%s”,str1); 思考:main中打印出的结果是?Strcopy 退出循环是时I值?第二十七张,PPT共八十九页,创作于2022年6月main
12、() int i,a5=1,2,3,4,5;例1:数组名作为函数参数func( a );0 x2000a01a12a23a34a45void func(int x5)void func(int x5) x3=0; for(i=0;i5;i+) printf(“%d ”,ai); 0 x2000X3=0;X3(0 x2000+3)所对应的元素0 x2000a01X0a12X1a23X2a30X3a45X4X0X1X2X3X4第二十八张,PPT共八十九页,创作于2022年6月例2:试比较以下程序与上面程序的区别输出结果:1 2 3 4 5void func(int x) x=0; main() i
13、nt i,a5=1,2,3,4,5; func( a3 ); for(i=0;i5;i+) printf(“%d ”,ai); a010 x2000a12a23a34a45X 4X 0第二十九张,PPT共八十九页,创作于2022年6月1、当用数组名作为函数参数时,并不是象变量作形参一样,再开空间给形参数组,而是接收数组名传递来的数组的首地址。所以,在子函数中对数组的修改,实质上就是对主函数中数组的修改。2、实参数组与形参数组类型必须一致。 3、主调函数和被调函数中分别定义数组名,可以一样,也可不一样,系统回自动区分,互不干扰。 由上面两例所得结论:第三十张,PPT共八十九页,创作于2022年6
14、月再看几例:例1:自编字符串复制函数strcopy strcopy(char str130,char str230) int i; for(i=0;str2i!=0;i+) str1i=str2i; str1i=0; void main( ) char str130; char str230=”abcde”; printf(“%s”,str1); strcopy(str1,str2); printf(“%s”,str1); 第三十一张,PPT共八十九页,创作于2022年6月再看几例:例2:自编求字符串长函数strlenth strlenth(char str30) int i; for(i=0
15、;str2i!=0;i+) ; return i; void main( ) char str130=”abcde”; int len; len=strlenth(str1); printf(“%d”,len); 第三十二张,PPT共八十九页,创作于2022年6月再看几例:例3:自编字符串比较函数strcomp int strcomp(char str1,char str2) int i; for(i=0;str1i=str2i & str1i!=0;i+) ; return (str1i-str2i); void main( ) char str130,str230; int d; gets
16、(str1); gets(str2); d=strcomp(str1,str2); printf(“%d”,d); 第三十三张,PPT共八十九页,创作于2022年6月9 指针作为函数参数1、传址调用:指针变量作为函数参数当指针变量作为函数参数时,传递的是变量的地址。读以下程序:void testpoint(int *p) int t; t=*p; t+; void main() int a=3,* p; p=&a; printf(“a=%dn”,a); testpoint(p); printf(“a=%dn”,a); a30 x2000:P主&at30 x6000:P函&a第三十四张,PPT共
17、八十九页,创作于2022年6月如果将程序的第4)行改为(*p)+,请再观察程序的结果:void testpoint(int *p) int t; t=*p; t+; void main() int a=3,* p; p=&a; printf(“a=%dn”,a); testpoint(p);printf(“a=%dn”,a); (*p)+;a30 x2000:p&at30 x6000:p&a第三十五张,PPT共八十九页,创作于2022年6月例1:两数交换函数swapt:void swap(int * p1,int * p2) int t; t=*p1;*p1=*p2;*p2=t; void m
18、ain() int a,b,*p1,*p2; scanf(“%d,%d”,&a,&b); p1=&a; p2=&b; swap(p1,p2); printf(“a=%d,b=%d”,a,b); printf(“%d,%d”,*p1,*p2); a50 x2000b302002p1&ap2&bp1&ap2&b第三十六张,PPT共八十九页,创作于2022年6月例1:两数交换函数swapt:void swap(int * p1,int * p2) int t; t=*p1;*p1=*p2;*p2=t; void main() int a,b,*p1,*p2; scanf(“%d,%d”,&a,&b)
19、; p1=&a; p2=&b; swap(p1,p2); printf(“a=%d,b=%d”,a,b); printf(“%d,%d”,*p1,*p2); a30 x2000b502002p1&ap2&bp1&ap2&b第三十七张,PPT共八十九页,创作于2022年6月void swap(int * p1,int * p2) int * p; p=p1;p1=p2;p2=p; void main() int a,b,*p1,*p2; scanf(“%d,%d”,&a,&b); p1=&a; p2=&b; swap(p1,p2); printf(“a=%d,b=%d”,a,b); printf
20、(“%d,%d”,*p1,*p2); a30 x2000b502002p1&ap2&bp1&ap2&bp例2:两数交换函数swap第三十八张,PPT共八十九页,创作于2022年6月void swap(int * p1,int * p2) int * p; p=p1;p1=p2;p2=p; void main() int a,b,*p1,*p2; scanf(“%d,%d”,&a,&b); p1=&a; p2=&b; swap(p1,p2); printf(“a=%d,b=%d”,a,b); printf(“%d,%d”,*p1,*p2); a30 x2000b502002p1&ap2&bp1&
21、bp2&ap例2:两数交换函数swap第三十九张,PPT共八十九页,创作于2022年6月例3:两数交换函数swapvoid swap(int * p1,int * p2) int * p; *p=*p1;*p1=*p2;*p2=*p; void main() int a,b,*p1,*p2; scanf(“%d,%d”,&a,&b); p1=&a; p2=&b; swap(p1,p2); printf(“a=%d,b=%d”,a,b); printf(“%d,%d”,*p1,*p2); 第四十张,PPT共八十九页,创作于2022年6月 形参p1和p2得到main函数中a和b的地址,这样p1和p
22、2的目标变量就是main函数的变量a和b。在swap函数中交换 *p1和 *p2的内容,就是交换a和b的内容,所以当函数调用结束后,尽管p1和p2已经释放,但操作结果仍保留在main函数的变量a和b中,这就是通过指针形参指向域扩展到主调函数的方法,达到主调函数与被调函数间交换多个数据的目的。 主调函数与被调函数之间数据传递的方法: 实参与形参之间的数据传递; 被调函数通过return语句把函数值返回到主调函数; 通过全局变量交换数据; 利用指针型参数在主调函数和被调函数之间传递数据。 第四十一张,PPT共八十九页,创作于2022年6月9 指针与函数 一维数组的指针作函数参数 例如被调函数abc
23、的定义形式有以下三种: void abc(int b10) void abc(int b ) void abc(int *b) 在主调函数有如下定义: int a10,*p=a; 则调用abc函数时可用 abc(a) 或 abc(p)2. 数组的指针作函数参数 当函数之间需要传递数组时,可以通过传递数组的首地址(即通过指针参数指向域的扩展),完成存取主调函数中数组元素的操作。 第四十二张,PPT共八十九页,创作于2022年6月9/3/2022429 指针与函数 【例8.20】字符串复制函数。 void copystr(char *t, char *s) while (*t+=*s+)!=0);
24、 main( ) char c80,*p=I am a student.; copystr(c,p); printf(%sn,c); 2. 数组的指针作函数参数 第四十三张,PPT共八十九页,创作于2022年6月9/3/2022439 指针与函数 二维数组的指针作函数参数 2. 数组的指针作函数参数 由于指向二维数组的指针分为行指针和元素指针,所以他们作为函数参数的形式也不同。 二维数组的行指针作函数参数 例如被调函数abc的定义形式有以下三种: void abc(int b24) void abc(int b 4) void abc(int (*b)4) 在主调函数有如下定义: int a2
25、4, (*p)4=a; 则调用abc函数时可用 abc(a) 或 abc(p)第四十四张,PPT共八十九页,创作于2022年6月9/3/202244 用函数输入输出整型二维数组,函数的形参为行指针。 void inarr(int (*p1)4,int m) int i,j; /* 可改写为void inarr(int p1 4,int m) */ for (i=0; im; i+) for (j=0; j4; j+) scanf(%d,*(p1+i)+j); main( ) int a34,(*p)4; p=a; inarr(a,3); outarr(p,3); 2. 数组的指针作函数参数 v
26、oid outarr(int (*p2)4,int m) int i,j; for (i=0; im; i+) for (j=0; j4; j+) printf(%6d,p2ij); printf(n); 可改写为void outarr( int p234,int m)/第四十五张,PPT共八十九页,创作于2022年6月9/3/2022459 指针与函数 二维数组的指针作函数参数 指向二维数组元素的指针作函数参数2. 数组的指针作函数参数 指向二维数组元素的指针作函数参数时,是利用二维数组元素按行连续存储的的特点,访问数组的每一个元素。被调函数的形参必须定义为指向二维数组元素的指针变量。例如被
27、调函数abc的定义形式如下: void abc(int *b) 另外,在主调函数有如下定义: int a24, *p=a0;则调用abc函数时可用 abc(a0)、abc(&a00) 或 abc(p)第四十六张,PPT共八十九页,创作于2022年6月9/3/202246【例】用函数输入输出整型二维数组,函数的形参为指向二维 数组元素的指针。 void inarr( int *p1, int m,int n) int i,j; for (i=0; im; i+) for (j=0; jn; j+) scanf(%d,p1+n*i+j);2. 数组的指针作函数参数 main( ) int a34,
28、*p; p=&a00; inarr(a0,3,4); outarr(p,3,4); void outarr(int *p1, int m, int n) int i,j; for (i=0; im; i+) for (j=0; j 0用递归求解更简单用递归求n! 第五十二张,PPT共八十九页,创作于2022年6月例1、求阶乘的函数。 1 若n0Fact(n) n*Fact(n1) 若n0 long Fact ( long n ) long s; if ( n = = 0 ) return 1;/递归出口 else s=n * Fact ( n 1 ); /递归 return(s);Main()
29、long n;Scanf(“%ld”,&n);Printf(“%ld”,fact(n);第五十三张,PPT共八十九页,创作于2022年6月主程序n4Fact(4)(1)n3Fact(3)(2)(1),4topn2Fact(2)(3)(1),4top(2),3n1Fact(1)(4)top(1),4(2),3(3),2n0Fact(0)top(1),4(2),3(3),2(4),1Return 1top(1),4(2),3(3),2(4),1Return 1top(1),4(2),3(3),2Return 2(1),4top(2),3Return 6(1),4topReturn24结束第五十四张
30、,PPT共八十九页,创作于2022年6月 递归过程1.递归过程的特点:是程序设计的一个强有力的工具,它具有结构清晰,程序易编、易读、易调试,程序正确性易证明等优点;但运行效率低。 2.基本原理:基本原理是重复地把问题转化为与原问题相似的新问题,直到问题可解决为止。3.关键点: 用较简单的新问题来表示较复杂的原问题 例如 :n!= n(n-1)!,或 n! = (n+1)!/(n+1) 前者(n-1)!较原问题n!简单,可行; 而后者(n+1)!较n!更复杂,不可行。 不能产生自己调用自己的无穷序列,即必须有一个递归调用序列的“出口”,来终止递归调用。第五十五张,PPT共八十九页,创作于2022
31、年6月递归函数:Fun(n)if(n0) fun(n/2);Printf(“%d ”,n); Main() int a=6; fun(a); 请问该程序输出结果是:0 1 3 6 第五十六张,PPT共八十九页,创作于2022年6月11 返回指针的函数指针函数:一个函数的返回值是一个指针(即地址)。函数定义形式: 类型说明 *函数名(形参表) 函数体 例: int *rp(int 1, int y) 第五十七张,PPT共八十九页,创作于2022年6月例:输入1-7整数,输出对应星期名#include #include void main()int i; char *day_name(int n)
32、;printf(“input Day No:n”);scanf(“%d”,&i);printf(“Day No:%2d %s n”,i, day_name(i) );char *day_name(int n)static char *name8 =“error”,”Monday”,”Tuesday”,; return(n7)?name0,namen);指针数组第五十八张,PPT共八十九页,创作于2022年6月变量的作用域:使用变量都必须先定义。但并非定义之后,在程序的任何地方均可使用这一变量。变量是有一定的作用范围的。根据变量的作用范围,可将变量分为局部变量(内部变量)和全局变量(外部变量)。
33、局部变量:作用范围局限与某个函数或结构体复合语句内。全局变量:在函数体外定义的变量是全局变量。其作用范围为定义之处开始,至整个程序结束。 12 变量的存储类型第五十九张,PPT共八十九页,创作于2022年6月int max( int x , int y) int a; if(xy) return x; else return y; void main( ) int a=3,b=5,c; c=max(a,b); 局部变量例: x,y的作用范围 a的作用范围不同函数中可以定义同名变量,互不干扰 a,b,c的作用范围 主函数中定义的量也属局部变量如果变量的定义是放在某复合语句中的,那么,该变量的作用
34、范围就只在这个复合语句中有效。第六十张,PPT共八十九页,创作于2022年6月int max( int x , int y) c=x-y; return c; void main( ) int a=3,b=5,c; c=max(a,b); 局部变量例: x,y的作用范围 语法错误,不能识别的标识符C a,b,c的作用范围 主函数中定义的量也属局部变量第六十一张,PPT共八十九页,创作于2022年6月 int a,b; void func(int x,int y) a=x+5; b=y+3; void main() func(3,8); printf(“a=%d,b=%dn”,a,b); fun
35、c(4,6); printf(“a=%d,b=%dn”,a,b); func(a,b); printf(“a=%d,b=%dn”,a,b); 全局变量例: a,b的作用范围 x,y的作用范围a=8,b=11a=9,b=9a=14,b=12第六十二张,PPT共八十九页,创作于2022年6月 int a,b; void func(int x,int y) int b; a=x+5; b=y+3; void main() func(3,8); printf(“a=%d,b=%dn”,a,b); func(4,6); printf(“a=%d,b=%dn”,a,b); func(a,b); print
36、f(“a=%d,b=%dn”,a,b); 全局变量例: a,b的作用范围 x,y的作用范围,全局变量b被屏蔽,局部变量b起作用a=8,b=0a=9,b=0a=14,b=0全局变量自动初始化为0;第六十三张,PPT共八十九页,创作于2022年6月全局变量在所有函数之外定义的变量在程序中定义它的位置以后都有效自动初始化为0从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存 在定义点之前或在其他文件中引用,应该进行如下声明: extern 类型名 变量名;使函数之间的数据交换更容易,也更高效但是并不推荐使用因为谁都可以改写全局变量,所以很难确定是谁改写了它结论:尽可能不使用全局变量
37、!全局变量与局部变量同名屏蔽原则:局部优先局部变量的全局变量比较:第六十四张,PPT共八十九页,创作于2022年6月根据变量的存在的时间(生存期),变量可划分为:动态存储变量和静态存储变量。动态存储方式:是在程序运行期间根据需要进行动态分配存储空间的方式。与之对应的变量被称为动态存储变量。通常,如果定义的变量没有其它的说明的话,系统自动将之作为一个动态存储变量,简称动态变量。当然,也可用关健字“auto”进行定义。静态存储方式:是指程序在运行期间分配给固定存储空间的方式。与之对应的变量被称为静态存储变量,简称静态变量。必须用关健字“static”进行定义。 13 动态存储变量与静态存储变量 第
38、六十五张,PPT共八十九页,创作于2022年6月13 动态存储变量与静态存储变量 指数据在内存中存储的方式,即编译器为变量分配内存的方式,它决定变量的生存期动态存储根据需要临时分配存储空间,离开即释放静态存储在程序运行期间分配固定的存储空间不释放程序区静态存储区动态存储区形参、自动变量、函数调用的现场等全局变量、静态变量第六十六张,PPT共八十九页,创作于2022年6月自动变量 (auto )“自动”体现在进入语句块时自动申请内存,退出时自动释放内存 动态局部变量标准定义格式auto 类型名 变量名;缺省的存储类型不初始化时,值是不确定的第六十七张,PPT共八十九页,创作于2022年6月 ad
39、d(a,b);printf(“%d,%d”,a,b);Add(a,b);printf(“%d,%d”,a,b);void add (int x,int y) 3535void main( ) int a=3,b=5;x=x+10;y=y+10;第六十八张,PPT共八十九页,创作于2022年6月 add(a,b);void add (int x,int y) 35void main( ) int a=3,b=5;x=x+10; y=y+10; 1315第六十九张,PPT共八十九页,创作于2022年6月 add(a,b);35void main( ) int a=3,b=5;printf(“%d,
40、%d”,a,b);第七十张,PPT共八十九页,创作于2022年6月 add(a,b);printf(“%d,%d”,a,b);Add(a,b);printf(“%d,%d”,a,b);void add (int x,int y) 3535void main( ) int a=3,b=5;x=x+10;y=y+10;第七十一张,PPT共八十九页,创作于2022年6月void add (int x,int y) 35void main( ) int a=3,b=5;x=x+10; y=y+10; 1315 add(a,b);printf(“%d,%d”,a,b);Add(a,b);printf(“
41、%d,%d”,a,b);第七十二张,PPT共八十九页,创作于2022年6月35void main( ) int a=3,b=5; add(a,b);printf(“%d,%d”,a,b);Add(a,b);printf(“%d,%d”,a,b);第七十三张,PPT共八十九页,创作于2022年6月静态变量(static)一个函数的内部变量在函数退出后失效。再次进入函数,变量值重新初始化把此变量定义为static,则变量的值可以保存到下次进入函数static int i;静态变量和全局变量都是静态存储类型自动初始化为0从静态存储区分配,生存期为整个程序运行期间但作用域不同第七十四张,PPT共八十九
42、页,创作于2022年6月对于用“static”关健字定义的静态变量则不同:该类型的变量由系统分配一个专门的存储空间来存放;当函数调用结束后,该变量所占空间并不释放,当下次再调用该函数时,该变量中已有值。如下例所示:13 动态存储变量与静态存储变量 int f(int a) int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); void main() int a=2,b,i; b=f(a); printf(“%dn”,b); b=f(a); printf(“%dn”,b); 第七十五张,PPT共八十九页,创作于2022年6月 b=f(a);2
43、?2void main( ) int a=2,b;int b=0;b=b+1;static int c=3;013 动态存储变量与静态存储变量 3int f ( int a ) 第七十六张,PPT共八十九页,创作于2022年6月 b=f(a);2?void main( ) int a=2,b;int b=0;b=b+1;static int c=3;c=c+1;113 动态存储变量与静态存储变量 32int f ( int a ) 第七十七张,PPT共八十九页,创作于2022年6月 b=f(a);2?void main( ) int a=2,b;int b=0;b=b+1;static int c=3;c=c+1;return (a+b+c);113 动态存储变量与静态存储变量 42int f ( int a ) 第七十八张,PPT共八十九页,创作于2022年6月 b=f(a);27void main( ) int a=2,b;13 动态存储变量与静态存储变量 4printf(“b=%dn”,b);输出:b=7 b=f(a);int f ( int a ) 2int b=0;0static int c=3;b=b+1;第七十九张,PPT共八十九页,创作于2022年6月 b=f(a);27void main( ) int a=2,b;int b=0;b=b+1;st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蓝莓种植、深加工可行性研究报告
- 某医药公司药品质量管理规范
- XXXX新能源电池基地项目(南埕一期)环评报告表
- 2026电工维修面试题及答案
- 2026高校旅游管理面试题及答案
- 2026管家顾问面试题目及答案
- 体感控制在证券交易中的探索
- 2026家风建设面试题及答案
- 交易流图谱分析
- 广告传媒公司财务规划师述职报告
- 教学设计-5.4 定积分的应用
- 2015海湾消防JB-QB-GST200 火灾报警控制器(联动型)安装使用说明书
- 办公用品价格清单
- 销售助理招聘笔试题及解答
- 公司年度经营计划模板(经营方针+目标细分+主要策略+保障措施+总体要求)
- 2024年公开选拔科级领导干部考试笔试试题及答案
- GB/T 43232-2023紧固件轴向应力超声测量方法
- 商铺租赁终止合同范本范文精简处理
- YY/T 0513.2-2020同种异体修复材料第2部分:深低温冷冻骨和冷冻干燥骨
- GA/T 1508-2018法庭科学车辆轮胎痕迹检验技术规范
- 库房管理培训课件
评论
0/150
提交评论