函数的定义与函数的声明_第1页
函数的定义与函数的声明_第2页
函数的定义与函数的声明_第3页
函数的定义与函数的声明_第4页
函数的定义与函数的声明_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、第第2章章 函数函数n2.1 函数的定义与函数的声明函数的定义与函数的声明n2.2 函数的调用函数的调用n2.3 内联函数内联函数n2.4 存储类型说明与作用域存储类型说明与作用域2.1 函数的定义与函数的声明函数的定义与函数的声明n2.1.1 函数的定义函数的定义n2.1.2 函数的声明函数的声明返回首页2.1.1 函数的定义函数的定义C+中的每一个函数都是从四个方面来进行定义:类中的每一个函数都是从四个方面来进行定义:类型、函数名、形式参数表和函数体。定义一个函数型、函数名、形式参数表和函数体。定义一个函数的语法格式为:的语法格式为: () 例如:例如:int max(int a,int

2、b) int t; if(ab) t=a; else t=b; return t;n为系统或用户已定义的一种数据类型,为系统或用户已定义的一种数据类型,它是函数执行过程中通过它是函数执行过程中通过return语句要求返回的语句要求返回的值的类型,又称为该函数的类型。值的类型,又称为该函数的类型。 n是用户为函数所起的名字,它是一个标是用户为函数所起的名字,它是一个标识符,应符合识符,应符合C+标识符的一般命名规则,用户标识符的一般命名规则,用户通过使用这个函数名和实参表可以调用该函数。通过使用这个函数名和实参表可以调用该函数。 n又称形式参数表,它包含有任意多个又称形式参数表,它包含有任意多个

3、(含(含0个,即没有)参数说明项,当多于一个时个,即没有)参数说明项,当多于一个时其前后两个参数说明项之间必须用逗号分开。其前后两个参数说明项之间必须用逗号分开。 n是一条复合语句,它以左花括号开始,是一条复合语句,它以左花括号开始,到右花括号结束,中间为一条或若干条到右花括号结束,中间为一条或若干条C+语句。语句。例:例:func1(int a, int b) 也可写成:也可写成:func1(a,b)int a;int b;例例2-1:给出以下程序的运行结果。给出以下程序的运行结果。#include iostream.hint func(int n)if(n0)return 1; else

4、if(n=0) return 0; else return -1;void main()int n; coutPlease input n:n; coutnthe result:func(n)endl;此程序的运行结果为:此程序的运行结果为:Please input n:2 the result:1Please input n:-2 the result:-1返回本节2.1.2 函数的声明函数的声明n函数声明也称函数模型(或函数原型)。在主调函数声明也称函数模型(或函数原型)。在主调函数中,如果要调用另一个函数,则须在本函数函数中,如果要调用另一个函数,则须在本函数或本文件中的开头将要被调用的

5、函数事先作一声或本文件中的开头将要被调用的函数事先作一声明。声明函数,就是告诉编译器函数的返回类型、明。声明函数,就是告诉编译器函数的返回类型、名称和形参表构成,以便编译系统对函数的调用名称和形参表构成,以便编译系统对函数的调用进行检查。进行检查。 n关于函数声明的几点说明:关于函数声明的几点说明:n(1)一个完整的程序中,函数的定义和函数的)一个完整的程序中,函数的定义和函数的调用可以在同一个程序文件中,也可以处在不同调用可以在同一个程序文件中,也可以处在不同的程序文件中,但必须确保函数声明语句与函数的程序文件中,但必须确保函数声明语句与函数调用表达式出现在同一个文件中,并且函数声明调用表达

6、式出现在同一个文件中,并且函数声明语句出现在前,函数的调用出现在后。语句出现在前,函数的调用出现在后。n(2)当一个函数要被一个文件中的多个函数调)当一个函数要被一个文件中的多个函数调用时,可以将该函数声明写在所有函数之前。用时,可以将该函数声明写在所有函数之前。n(3)虽然函数声明与函数头相似,但是它们之)虽然函数声明与函数头相似,但是它们之间也有细微的差别。间也有细微的差别。 n(4)函数声明中不能只写形参名而不写类型。)函数声明中不能只写形参名而不写类型。n(5)函数声明中除了当函数返回值类型为)函数声明中除了当函数返回值类型为int或或char时函数类型可以省略外,一般情况下不能省时函

7、数类型可以省略外,一般情况下不能省略函数类型。略函数类型。 n(6)由于调用时是按参数顺序进行传递的,所)由于调用时是按参数顺序进行传递的,所以函数声明中形参的次序也不要写错。以函数声明中形参的次序也不要写错。n(7)并不是对所有被调函数都要作声明。)并不是对所有被调函数都要作声明。 例如:设有一函数的定义为:例如:设有一函数的定义为:double func1(double a, int b, float c)函数体函数体正确完整的函数声明应为:正确完整的函数声明应为:double func1(double x, int y, float z); /末尾要加上分号末尾要加上分号返回本节2.2

8、函数的调用函数的调用n2.2.1 函数调用的格式函数调用的格式n2.2.2 函数调用的过程函数调用的过程n2.2.3 函数调用时的参数传递函数调用时的参数传递n2.2.4 带默认形参值的函数带默认形参值的函数n2.2.5 函数的递归调用函数的递归调用n2.2.6 函数的嵌套调用函数的嵌套调用返回首页2.2.1 函数调用的格式函数调用的格式n在在C+中,除了主函数中,除了主函数main由系统自动调用外,由系统自动调用外,其他函数都是由主函数直接或间接调用的。函数其他函数都是由主函数直接或间接调用的。函数调用的语法格式为:调用的语法格式为:n函数名(实际参数表)函数名(实际参数表);n调用函数时的

9、参数称为实际参数或实参。调用函调用函数时的参数称为实际参数或实参。调用函数时,被调函数名后跟实参表。数时,被调函数名后跟实参表。 n对一个函数的调用方式可以有多种,常见的有下列两种方对一个函数的调用方式可以有多种,常见的有下列两种方式:式:n方式一:这种方式是将函数调用单独作为一条表达式语句方式一:这种方式是将函数调用单独作为一条表达式语句使用,只要求函数完成一定的操作,而不使用它的返回值。使用,只要求函数完成一定的操作,而不使用它的返回值。如果该函数调用带有返回值,则这个值将会自动丢失。例如果该函数调用带有返回值,则这个值将会自动丢失。例如:如:max(3,5);n方式二:这种方式是对于具有

10、返回值的函数来说,把函数方式二:这种方式是对于具有返回值的函数来说,把函数调用语句看作语句一部分,使用函数的返回值参与相应的调用语句看作语句一部分,使用函数的返回值参与相应的运算或执行相应的操作,如把它赋值给一个变量,用它参运算或执行相应的操作,如把它赋值给一个变量,用它参与运算,把它输出到屏幕上显示出来,作为判断条件,作与运算,把它输出到屏幕上显示出来,作为判断条件,作为另一个函数的实参等等。为另一个函数的实参等等。 例例2-2:给出以下程序的运行结果。给出以下程序的运行结果。#includeint max(int a,int b,int c) int t; t=a; if(bt) t=b;

11、 if(ct) t=c; return t;void main() int x,y,z;coutPlease input x y z:xyz; int m=max(x,y,z); coutThe max is:mendl;此程序的运行结果为:此程序的运行结果为:Please input x y z:3 6 4 The max is:6返回本节2.2.2 函数调用的过程函数调用的过程n当一个当一个C+程序执行时,系统首先将其代码装入程序执行时,系统首先将其代码装入内存中的代码区,然后自动调用主函数。在主函内存中的代码区,然后自动调用主函数。在主函数的执行过程中,如果遇到某个函数调用语句,数的执行

12、过程中,如果遇到某个函数调用语句,则将函数调用语句执行后的位置(称为返回地址)则将函数调用语句执行后的位置(称为返回地址)保存起来,作为从被调用函数返回时的地址,同保存起来,作为从被调用函数返回时的地址,同时,保存当前函数的现场。然后开始执行被调用时,保存当前函数的现场。然后开始执行被调用函数。当被调用函数执行结束或遇到函数。当被调用函数执行结束或遇到return语句语句结束,则首先将返回值赋给调用函数本身,然后结束,则首先将返回值赋给调用函数本身,然后恢复调用之前的现场,并从调用前保存的返回地恢复调用之前的现场,并从调用前保存的返回地址处开始继续向下执行程序。址处开始继续向下执行程序。图2-

13、1 main()函数与被调用函数的关系示意图返回本节2.2.3 函数调用时的参数传递函数调用时的参数传递n1按值传递按值传递n2地址传递地址传递n3引用传递引用传递1按值传递按值传递例例2-3:按值传递。按值传递。#include iostream.hvoid swap(int,int);void main() int a=3,b=4; couta=a,b=bendl; swap(a,b); couta=a,b=bendl;void swap(int x,int y) int t=x; x=y; y=t;此程序的运行结果为:此程序的运行结果为:a=3,b=4a=3,b=42地址传递地址传递例例

14、2-4:地址传递。地址传递。#include iostream.hvoid swap(int *,int *);void main() int a=3,b=4; couta=a,b=bendl; swap(&a,&b); couta=a,b=bendl;void swap(int *x,int *y) int t=*x; *x=*y; *y=t;此程序的运行结果为:此程序的运行结果为:a=3,b=4a=4,b=33引用传递引用传递例例2-5:引用传递。引用传递。#include iostream.hvoid swap(int &,int &);void main() int a=3,b=4;

15、couta=a,b=bendl; swap(a,b); couta=a,b=bendl;void swap(int &x,int &y) int t=x; x=y; y=t;此程序的运行结果为:此程序的运行结果为:a=3,b=4a=4,b=3返回本节2.2.4 带默认形参值的函数带默认形参值的函数n1默认参数的含义默认参数的含义 默认参数就是在调用函数时可以省略实参。默认参数就是在调用函数时可以省略实参。n2默认参数的声明规定默认参数的声明规定n3默认参数的顺序规定默认参数的顺序规定n4默认值的限定默认值的限定1默认参数的含义默认参数的含义例如:例如:void delay(int loops)

16、;.void delay(int loops) if (loops=0)return; for (int i=0;iloops;i+);例例2-6:给出以下程序的运行结果。给出以下程序的运行结果。#include int func1(int a=4);void main() int b; b=func1(); cout”b=”bendl;int func1(int a) return a+1;此程序的运行结果为:此程序的运行结果为:b=52默认参数的声明规定默认参数的声明规定n注意:注意:当函数既有声明又有定义时,默认参数在当函数既有声明又有定义时,默认参数在函数声明中定义,函数定义中不允许使

17、用默认参函数声明中定义,函数定义中不允许使用默认参数。数。3默认参数的顺序规定默认参数的顺序规定例例2-7:给出以下程序的运行结果。给出以下程序的运行结果。#include int leijia(int a, int b=2, int c=3);void main() int x(5),y(6),z(7); int he; he=leijia(x,y,z); couthe=heendl; coutendl; he=leijia(x,y); couthe=heendl; coutendl;he=leijia(x); couthe=heendl; coutendl;int leijia(int a

18、, int b, int c) couta=atb=btc=cendl; return(a+b+c);此程序的运行结果为:此程序的运行结果为:a=5 b=6 c=7he=18 a=5 b=6 c=3he=14 a=5 b=2 c=3he=104默认值的限定默认值的限定例如:例如:int a=1;int fun(int);下面调用是合法的:下面调用是合法的:int g(int x=fun(a); /默认参数是函数调用。默认参数是函数调用。而下面调用是不合法的:而下面调用是不合法的: void fun( ) int i; void g(int x=i);返回本节2.2.5 函数的递归调用函数的递归

19、调用n1递归的概念递归的概念n2函数递归调用机制函数递归调用机制n3递归的实现递归的实现 n4递归的评价与消除递归递归的评价与消除递归1递归的概念递归的概念例例2-8:直接递归调用。直接递归调用。int f(x)int x; int y,z; z=f(y); /f()函数函数调用自身,直接递归调用自身,直接递归 return(z*x); 例例2-9:间接递归调用。间接递归调用。int func1(int a) int b; b=func2(a+1); /func1()函数调用函数调用func2()函数,间接递归函数,间接递归 return(b); int func2(int c) int d;

20、 d=func1(c-1); /func2()函数调用函数调用func1()函数,间接递归函数,间接递归 return(d); 例例2-10:求求n的阶乘。的阶乘。#include iostream.hlong f(int n) if(n0) coutNegative argument to fact!endl; return(-1); else if(n=1) return(1); else return (n*f(n-1);void main() long f(int n); int n; coutplease input n:n; coutn!=f(n)endl;此程序的运行结果为:此程

21、序的运行结果为:please input n:5 n!=1202函数递归调用机制函数递归调用机制3递归的实现递归的实现 n(1)需有完成函数任务的语句(递推公式)。)需有完成函数任务的语句(递推公式)。n(2)一个能结束递归的语句。)一个能结束递归的语句。n(3)一个递归调用语句。)一个递归调用语句。n(4)先测试,后递归调用。)先测试,后递归调用。 例例2-12:汉诺塔问题。汉诺塔问题。#include iostream.hvoid main() int n; void hanoi(int n,char a,char b,char c); coutPlease input the numbe

22、r of disks to be moved:n; hanoi(n,a,b,c);void hanoi(int n,char a,char b,char c) if(n0) hanoi(n-1,a,c,b); coutnMove disc n from pile a to b; hanoi(n-1,c,b,a); 此程序的运行结果为:此程序的运行结果为:Please input the number of disks to be moved:3 Move disc 1 from pile a to bMove disc 2 from pile a to cMove disc 1 from pi

23、le b to cMove disc 3 from pile a to bMove disc 1 from pile c to aMove disc 2 from pile c to bMove disc 1 from pile a to b4递归的评价与消除递归递归的评价与消除递归n例例2-13:将上面的例将上面的例2-11用循环语句实现。用循环语句实现。#include const N=8;void main( ) long i,i1=1,i2=1,i3; for (i=3;i=N;i+)i3=i1+i2;i1=i2;i2=i3; couti3endl;n例例2-14:求最大公约数,分别采

24、用递归法和非递归法。求最大公约数,分别采用递归法和非递归法。程序一:(递归法)程序一:(递归法)#include iostream.hint gcd(int a,int b) if(a%b=0) return b; else return gcd(b,a%b);void main() int m,n; coutPlease input m & n:mn; if(mn) int t=m;m=n;n=t; coutgcd(m,n)=gcd(m,n)endl;程序一:(递归法)程序一:(递归法)#include iostream.hint gcd(int a,int b) if(a%b=0) ret

25、urn b; else return gcd(b,a%b);void main() int m,n; coutPlease input m & n:mn; if(mn) int t=m;m=n;n=t; coutgcd(m,n)=gcd(m,n)endl;此程序的运行结果为:此程序的运行结果为:Please input m & n:12 8 gcd(12,8)=4程序二:(非递归法)程序二:(非递归法)#include iostream.hint gcd(int a,int b) while(b!=0) int r=a%b; a=b; b=r; return a;void main() int

26、 m,n; coutPlease input m & n:mn; if(mn) int t=m;m=n;n=t; coutgcd(m,n)=gcd(m,n)endl;此程序的运行结果为:此程序的运行结果为:Please input m & n:12 8 gcd(12,8)=4返回本节2.2.6 函数的嵌套调用函数的嵌套调用void main()int m; float n;func1(m,n);func1(int a, float b) float c;c=func2(b-1,b+1);int func2(float x, float y)函数体函数体返回本节2.3 内联函数内联函数n内联扩展

27、(内联扩展(inline expansion)简称为内联(简称为内联(inline),),内联函数也称为内嵌函数。当在一个函数的定义或声明前内联函数也称为内嵌函数。当在一个函数的定义或声明前加上关键字加上关键字inline则就把该函数定义为内联函数。则就把该函数定义为内联函数。n引入内联函数的目的是为了解决程序中函数调用的效率问引入内联函数的目的是为了解决程序中函数调用的效率问题。题。n函数的引入虽然可以减少程序的目标代码,实现程序代码函数的引入虽然可以减少程序的目标代码,实现程序代码和数据的共享。在程序编译时,若把一个函数定义为内联和数据的共享。在程序编译时,若把一个函数定义为内联函数后,在

28、程序编译阶段,编译器就会把每次调用该函数函数后,在程序编译阶段,编译器就会把每次调用该函数的地方都直接替换为该函数体中的代码,的地方都直接替换为该函数体中的代码, 由此省去函数由此省去函数的调用及相应的保存现场、参数传递和返回操作,从而加的调用及相应的保存现场、参数传递和返回操作,从而加快整个程序的执行速度。快整个程序的执行速度。 返回首页定义内联函数的方法很简单,只要在函数定义的头定义内联函数的方法很简单,只要在函数定义的头前加上关键字前加上关键字inline即可。内联函数的定义方法即可。内联函数的定义方法与一般函数一样。如:与一般函数一样。如:inline int add_int (int

29、 x, int y, int z)return x+y+z;例例2-15:给出以下程序的运行结果。给出以下程序的运行结果。#include iostream.hinline int abs(int x) return x0?-x:x;void main() int a,b=3,c,d=-4; a=abs(b); c=abs(d); couta=a,c=cendl;此程序的运行结果为:此程序的运行结果为:a=3,c=4例例2-16:一个有问题的程序。一个有问题的程序。#include iostream.h#include stdio.hint isnumber(char); /错误,此处缺少错误

30、,此处缺少inlinevoid main() char c; while(c=getc(stdin)!=n) if(isnumber(c) coutyou entered a digitendl; else coutyou entered a non_digit=0 & ch=9)?1:0;例例2-17:分析以下程序并给出执行结果。分析以下程序并给出执行结果。#include int power_int(int x);void main( ) for (int i=1;i=10;i+) int p=power_int(i); couti*i=pendl; inline int power_in

31、t(int x)return (x)*(x);运行结果为:运行结果为:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100 n在使用内联函数时,应注意如下几点:在使用内联函数时,应注意如下几点:n(1)内联函数中不能含有任何循环以及)内联函数中不能含有任何循环以及switch和和goto语句;语句;n(2)内联函数的声明必须出现在内联函数第一)内联函数的声明必须出现在内联函数第一次被调用之前;次被调用之前;n(3)内联函数中不能说明数组;)内联函数中不能说明数组;n(4)递归函数(自己调用自己的函数)不能定)递归函数(自己调用

32、自己的函数)不能定义为内联函数。义为内联函数。返回本节2.4 存储类型说明与作用域存储类型说明与作用域n2.4.1 存储类型说明存储类型说明n2.4.2 作用域的分类作用域的分类n2.4.3 域运算符域运算符返回首页2.4.1 存储类型说明存储类型说明n1自动存储类型(局部型)自动存储类型(局部型)格式:格式:auto 数据类型数据类型 变量名(或函数名)变量名(或函数名)n2外部存储类型(全局型)外部存储类型(全局型)格式:格式:extern 数据类型数据类型 变量名(或函数名)变量名(或函数名)n3静态存储类型静态存储类型格式:格式:static 数据类型数据类型 变量名(或函数名)变量名

33、(或函数名)n4寄存器存储类型寄存器存储类型格式:格式:register 数据类型数据类型 变量名(或函数名)变量名(或函数名)n静态局部变量具有如下特点:静态局部变量具有如下特点: (1)静态局部变量在定义它的函数内部时可见的,)静态局部变量在定义它的函数内部时可见的,只能被定义它的函数使用。只能被定义它的函数使用。 (2)静态局部变量存放在内存的全局数据区,静)静态局部变量存放在内存的全局数据区,静态局部变量一经定义不会再次分配存储空间,也态局部变量一经定义不会再次分配存储空间,也不会自行消失,直到程序运行结束,这一点与全不会自行消失,直到程序运行结束,这一点与全局变量相同。局变量相同。(

34、3)静态局部变量默认初始值为)静态局部变量默认初始值为0,也可专门初始,也可专门初始化,这一点又与全局变量相同。化,这一点又与全局变量相同。n例例2-18:下面的程序定义了全局变量、静态局部变量和局部变量,指下面的程序定义了全局变量、静态局部变量和局部变量,指出程序运行结果。出程序运行结果。 #include void func( )int n=1;void main( )static int a;int b=-10;couta:a b:bn:nendl;b+=4;func( );#include void func( )int n=1;void main( )static int a;int

35、 b=-10;couta:a b:bn:nendl;b+=4;func( );couta:a b:bn:nendl;n+=10;func( );void func( )static int a=2;int b=5;a+=2;n+=12;b+=5;couta:a b:bn:nendl;输出结果为:输出结果为:a:0 b:-10 n:1a:4 b:10 n:13a:0 b:-6 n:13a:6 b:10 n:35C+编译器将用编译器将用register说明的变量的值存放在说明的变量的值存放在CPU的寄存的寄存器中,而不是存储器中。通常将程序中使用频率最高的变器中,而不是存储器中。通常将程序中使用频

36、率最高的变量说明为量说明为register存储类型变量,如用于循环控制。如:存储类型变量,如用于循环控制。如: register int i; for(i=0;imaxlen;i+) . /block exit will free the register返回本节2.4.2 作用域的分类作用域的分类n1全局作用域全局作用域 n2文件作用域文件作用域n3函数作用域函数作用域n4块作用域块作用域1全局作用域全局作用域 n当一个变量在一个程序文件的所有函数定义之外当一个变量在一个程序文件的所有函数定义之外(并且通常在所有函数定义之前)定义时,则该(并且通常在所有函数定义之前)定义时,则该变量具有全局

37、作用域,即该变量在整个程序包括变量具有全局作用域,即该变量在整个程序包括的所有文件中都有效,都是可见的,都是可以访的所有文件中都有效,都是可见的,都是可以访问的。当一个全局变量不是在本程序文件中定义问的。当一个全局变量不是在本程序文件中定义时,若要在本程序文件中使用,则必须在本文件时,若要在本程序文件中使用,则必须在本文件开始进行声明,声明格式为:开始进行声明,声明格式为:nextern ,; 例例2-19:给出以下程序的运行结果。给出以下程序的运行结果。#includevoid input();void output();int sumSquare(int b, int n);const i

38、nt nn=5; /定义文件域常量定义文件域常量nnint ann; /定义全局域数组定义全局域数组annvoid main()input();output();coutsumSquare(a,nn)endl; /使用数组使用数组a和常量和常量nn作为实参作为实参void input()cout为数组为数组a输入输入nn个整数个整数:endl;for(int i=0;iai; /i是本函数的局部变量是本函数的局部变量void output()cout输出数组输出数组a中的中的nn个元素值个元素值:endl;for(int i=0;inn;i+) coutai ; /i是本函数的是本函数的局部变

39、量局部变量coutendl;int sumSquare(int b, int n) /b将指向对应的实参数将指向对应的实参数组组a,形参指针形参指针b /和和形参形参n是本函数中的局部变量是本函数中的局部变量/求数组求数组a中中n个元素之和的平方个元素之和的平方int s=0,i; /s和和i是本函数的局部变量是本函数的局部变量for(i=0;in;i+) s+=bi;return s*s;2文件作用域文件作用域n当一个变量定义语句出现在一个程序文件中的所当一个变量定义语句出现在一个程序文件中的所有函数定义之外,并且该语句前带有有函数定义之外,并且该语句前带有static保留保留字时,则该语句

40、定义的所有变量都具有文件作用字时,则该语句定义的所有变量都具有文件作用域,即在整个程序文件中有效,但在其他文件中域,即在整个程序文件中有效,但在其他文件中是无效的,不可见的。是无效的,不可见的。n若在定义文件作用域变量时没有初始化,则编译若在定义文件作用域变量时没有初始化,则编译时会自动把它初始化为时会自动把它初始化为0。n例例2-20:给出以下程序的运行结果。给出以下程序的运行结果。程序主文件程序主文件2-20-1.cpp#includeint xk8(int n); /函数函数xk8的原型声明的原型声明int xk9(int n); /函数函数xk9的原型声明的原型声明int AA=5;

41、/定义全局变量定义全局变量AAextern const int BB=8; /定义全局常量定义全局常量BBstatic int CC=12; /定义文件域变量定义文件域变量CCconst int DD=23; /定义文件域常量定义文件域常量DDvoid main()int x=15; /x的作用域为主函数体的作用域为主函数体coutx*x=xk8(x)endl;coutmainFile: AA,BB=AA,BBendl;coutmainFile: CC,DD=CC,DDendl;coutxk9(16)endl;int xk9(int n) /n的作用域为的作用域为xk9函数体函数体int x=

42、10; /x的作用域为的作用域为xk9函数体函数体coutxk9:x=xendl;return n*x;程序次文件程序次文件2-20-2.cpp#includeint xk8(int n); /函数函数xk8的原型声明的原型声明extern int AA; /全局变量全局变量AA的声明的声明extern const int BB; /全局常量全局常量BB的声明的声明static int CC=120; /定义文件域变量定义文件域变量CCconst int DD=230; /定义文件域常量定义文件域常量DDint xk8(int n) /n的作用域为的作用域为xk8函数体函数体coutattachFile: AA,BB=AA,BBendl;coutattachFile: CC,DD=CC,DDendl;return n

温馨提示

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

评论

0/150

提交评论