青岛理工大学课件.ppt

上传人(卖家):晟晟文业 文档编号:4940783 上传时间:2023-01-27 格式:PPT 页数:60 大小:772.50KB
下载 相关 举报
青岛理工大学课件.ppt_第1页
第1页 / 共60页
青岛理工大学课件.ppt_第2页
第2页 / 共60页
青岛理工大学课件.ppt_第3页
第3页 / 共60页
青岛理工大学课件.ppt_第4页
第4页 / 共60页
青岛理工大学课件.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、青岛理工大学青岛理工大学第三章 函数本章主要内容本章主要内容3.1 3.1 函数的定义和声明函数的定义和声明3.2 3.2 函数的调用与参数传递函数的调用与参数传递3.3 3.3 内联函数内联函数3.4 3.4 函数重载函数重载3.5 3.5 带默认形参值的函数带默认形参值的函数3.6 3.6 作用域与生存周期作用域与生存周期3.7 3.7 多文件结构多文件结构3.1 3.1 函数的定义与申明函数的定义与申明1 1、函数的定义、函数的定义l无参函数的一般形式无参函数的一般形式类型说明符 函数名()类型说明语句类型说明符 函数名(形式参数表)形式参数类型说明 类型说明 语句l有参函数的一般形式有

2、参函数的一般形式【例例3-13-1】max max函数的位置示例函数的位置示例#include#include int max(int a,int b)int max(int a,int b)if(ab)return a;if(ab)return a;else return b;else return b;void main()void main()int max(int a,int b);int max(int a,int b);intint x,y,zx,y,z;coutcoutinput two numbers:input two numbers:xy;cinxy;z=max(x,y);

3、z=max(x,y);coutmaxmum=zendl;coutmaxmum=zendl;3.1 3.1 函数的定义与申明函数的定义与申明2 2、函数的申明、函数的申明l函数声明的语法形式函数声明的语法形式类型标识符类型标识符 函数名(形式参数表)函数名(形式参数表)语句序列语句序列 l形式参数表形式参数表 type name name1 1,type,name name2 2,.,type,.,name namen nl函数的返回值函数的返回值 由由 return return 语句给出;无返回值的函数(语句给出;无返回值的函数(voidvoid类型),类型),不必写不必写returnret

4、urn语句语句是被初始化的内部变量,寿命和可见性仅限于函数内部若无返回值,写void【例例3-13-1】max max函数的位置示例函数的位置示例#include#include intint max(intmax(int a,inta,int b);b);/函数声明函数声明void main()void main()int max(int a,int b);int max(int a,int b);intint x,y,zx,y,z;coutcoutinput two numbers:input two numbers:xy;cinxy;z=max(x,y);z=max(x,y);coutm

5、axmum=zendl;coutmaxmum=zb)return a;if(ab)return a;else return b;else return b;【例例3-23-2】实现两个数相加实现两个数相加#include#include intint add(add(intint,intint););/函数原型函数原型void main()void main()intint sum,x,ysum,x,y;coutcout请输入被加数和加数请输入被加数和加数:xy;xy;sum=add(sum=add(x,yx,y);/);/函数调用函数调用coutcoutSum=sumSum=sumendle

6、ndl;intint add(add(intint a,inta,int b)/b)/函数定义函数定义 return return a+ba+b;运行结果:请输入被加数和加数:213 625Sum=8383.2 3.2 函数的调用与参数传递函数的调用与参数传递1 1、函数的调用、函数的调用l调用形式调用形式 l函数名函数名(实参列表)(实参列表)l函数调用格式函数调用格式l函数表达式函数表达式l函数语句函数语句l函数实参函数实参3.2 3.2 函数的调用与参数传递函数的调用与参数传递2 2、函数调用时的参数传递、函数调用时的参数传递l按值传递按值传递 l形参在没有被调用时,不占用存储空间形参在

7、没有被调用时,不占用存储空间l调用函数时,应该注意函数的实参与形参类型一致,调用函数时,应该注意函数的实参与形参类型一致,否则会出现错误否则会出现错误lC+C+函数中参数的求值顺序为自右至左函数中参数的求值顺序为自右至左【例例3-33-3】按值传递按值传递#include#include void swap(void swap(int,intint,int););void main()void main()intint a=3,b=4;a=3,b=4;coutcouta=a,b=a=a,b=“b bendlendl;swap(swap(a,ba,b););coutcouta=a,b=a=a,b

8、=b b endlendl;void swap(int x,int y)void swap(int x,int y)intint t=x;t=x;x=y;x=y;y=t;y=t;运行结果:a=3,b=4a=3,b=4【例例3-43-4】函数参数的传递顺序函数参数的传递顺序#include#include int some_fun(int a,int b)int some_fun(int a,int b)return a+b;return a+b;void main()void main()int x,y;int x,y;x=2;y=3;x=2;y=3;coutsome_fun(+x,x+y)e

9、ndl;coutsome_fun(+x,x+y)endl;x=2;y=3;x=2;y=3;coutsome_fun(x+y,+x)endl;coutsome_fun(x+y,+x)endl;运行结果:8 93.2 3.2 函数的调用与参数传递函数的调用与参数传递2 2、函数调用时的参数传递、函数调用时的参数传递l地址传递地址传递 【例3-5】地址传递#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

10、,int*y)int t=*x;*x=*y;*y=t;运行结果:a=3,b=4a=4,b=33.2 3.2 函数的调用与参数传递函数的调用与参数传递2 2、函数调用时的参数传递、函数调用时的参数传递l引用传递引用传递 l数据类型数据类型&引用名引用名=数据类型变量名;数据类型变量名;l引用引用(&)(&)是标识符的别名是标识符的别名;【例例3-6】引用的建立和使用。#include using namespace std;int main()int a=30,b=20;int&refa=a,&refb=b;refa=a+20;b=refb+10;coutrefa“”aendl;coutrefb

11、 bendl;refa=b;/此时引用refa仍旧是a的别名,只是把b的值给到a。coutrefa“”aendl;return 0;运行结果:50 50 30 3030 30【例例3-73-7】引用传递引用传递#include#include iostream.hiostream.h void swap(void swap(intint&,&,intint&);&);void main()void main()intint a=3,b=4;a=3,b=4;coutcout“a=”a“,b=“a=”a“,b=”bbendlendl;swap(swap(a,ba,b););coutcout“a=”

12、a“,b=“a=”a“,b=”bbendlendl;void swap(int&x,int&y)void swap(int&x,int&y)intint t=x;t=x;x=y;x=y;y=t;y=t;运行结果:a=3,b=4a=4,b=33.2 3.2 函数的调用与参数传递函数的调用与参数传递3 3、函数的嵌套调用和递归调用函数的嵌套调用和递归调用l函数的嵌套调用函数的嵌套调用 【例3-8】函数的嵌套调用,求三个数中最大数和最小数的差值。#includeusing namespace std;int max(int x,int y,int z)int t;t=xy?x:y;return(tz

13、?t:z);int min(int x,int y,int z)int t;t=xy?x:y;return(tabc;coutMax-Min=dif(a,b,c)endl;运行结果:5-6 15213.2 3.2 函数的调用与参数传递函数的调用与参数传递3 3、函数的嵌套调用和递归调用函数的嵌套调用和递归调用l函数的递归调用函数的递归调用 图图3-1 直接调用过程示意图直接调用过程示意图图图3-2 间接调用过程示意图间接调用过程示意图3.2 3.2 函数的调用与参数传递函数的调用与参数传递3 3、函数的嵌套调用和递归调用函数的嵌套调用和递归调用l函数的递归调用函数的递归调用l递归函数的一般形式

14、:递归函数的一般形式:函数类型 递归函数名f(参数x)if(满足结束条件)结果=初值;else 结果=含f(x-1)的表达式;返回结果;【例【例3-93-9】编程计算某个正整数的阶乘编程计算某个正整数的阶乘#include#include long long intint facfac(intint n)n)intint total;total;if(n=1|n=0)total=1;if(n=1|n=0)total=1;else total=fac(n-1)else total=fac(n-1)*n;n;return total;return total;void main()void mai

15、n()intint n;n;coutcoutplease input a integer:;n;cinn;coutn!is fac(n)endl;coutn!is fac(n)0)if(n0)while(n)while(n)total total*=n;=n;n-;n-;return total;return total;3.3 3.3 内联函数内联函数l声明时使用关键字声明时使用关键字 inlineinline。l编译时在调用处用函数体进行替换编译时在调用处用函数体进行替换,节省了参节省了参数传递、控制转移等开销。数传递、控制转移等开销。l注意:注意:l内联函数体内不能有内联函数体内不能有循

16、环语句循环语句和和switchswitch语句。语句。l内联函数的定义必须出现在内联函数第一次被调用内联函数的定义必须出现在内联函数第一次被调用之前。之前。l内联函数不能是递归函数内联函数不能是递归函数l语句数尽可能少,一般不超过语句数尽可能少,一般不超过5 5行行【例【例3-123-12】将字符数组】将字符数组str1str1中所有小写字母中所有小写字母(a(az)z)转换成大写字母转换成大写字母#include#include#include#include intint up_letterup_letter(char(char chch););void main()void main()

17、char char strstr80;80;intint i i;coutcoutplease input a string:;strstr;for(for(i i=0;i=0;istrlenstrlen(strstr););i i+)+)if(if(up_letterup_letter(strstr i i)strstr i i-=32;-=32;coutcoutthe result is:the result is:strstr=a&=a&chch=z)=z)return 1;return 1;else else return 0;return 0;运行结果:Please input a

18、string:goodMORNING3456The result is:GOODMORNING3456【例【例3-123-12】将字符数组】将字符数组str1str1中所有小写字母中所有小写字母(a(az)z)转换成大写字母转换成大写字母#include#include#include#include inline inline intint up_letterup_letter(char(char chch););void main()void main()char char strstr80;80;intint i i;coutcoutplease input a string:;strs

19、tr;for(for(i i=0;i=0;istrlenstrlen(strstr););i i+)+)if(if(up_letterup_letter(strstr i i)strstr i i-=32;-=32;coutcoutthe result is:the result is:strstr=a&=a&chch=z)=z)return 1;return 1;else else return 0;return 0;【例例3-133-13】内联函数的应用内联函数的应用#include#include inline int abs(int x)inline int abs(int x)ret

20、urn x0?-x:x;return x0?-x:x;void main()void main()int a,b=3,c,d=-4;int a,b=3,c,d=-4;a=abs(b);a=abs(b);c=abs(d);c=abs(d);couta=a,c=cendl;couta=a,c=cendl;运行结果:a=3,c=43.4 3.4 函数重载函数重载1 1、函数重载的定义、函数重载的定义l重载是指同一个函数名对应多个函数的现象重载是指同一个函数名对应多个函数的现象形参类型不同形参类型不同int add(int add(intint x,x,intint y);y);float add(f

21、loat add(floatfloat x,x,floatfloat y);y);形参个数不同形参个数不同int add(int x,int y);int add(int x,int y);int add(int x,int y,int add(int x,int y,intint z z););3.4 3.4 函数重载函数重载2 2、函数重载的绑定、函数重载的绑定l函数重载要求编译器能够唯一地确定调用一个函数时函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码应执行哪个函数代码l重载函数重载函数add()add()的绑定:的绑定:coutadd(1,2)endl;/coutad

22、d(1,2)endl;/匹配匹配int add(int,int);int add(int,int);coutadd(1.2,3.4)endl;/coutadd(1.2,3.4)endl;/匹配匹配double add(double,double add(double,double);double);cout add(a,b)endl;/cout add(a,b)endl;/匹配匹配int add(int,int);int add(int,int);【例例3-143-14】求三个操作数之和求三个操作数之和#include#include intint sum(sum(int,int,intint

23、,int,int););double sum(double,double,double);double sum(double,double,double);void main()void main()coutInt:sum(2,3,4)endl;coutInt:sum(2,3,4)endl;coutDouble:sum(1.4,2.7,3.8)endl;coutDouble:sum(1.4,2.7,3.8)endl;intint sum(sum(intint a,inta,int b,intb,int c)c)return return a+b+ca+b+c;double sum(double

24、 a,double b,double c)double sum(double a,double b,double c)return return a+b+ca+b+c;运行结果:Int:9Double:7.93.5 3.5 带默认形参值的函数带默认形参值的函数lC+C+语言允许在函数说明或函数定义中为形参预语言允许在函数说明或函数定义中为形参预赋一个默认的值,这样的函数就叫做赋一个默认的值,这样的函数就叫做带有默认带有默认形参值的函数形参值的函数int fun(int x=15,int y=8)int fun(int x=15,int y=8)return x-y;return x-y;voi

25、d main(void)void main(void)fun(34,22);/fun(34,22);/传递给形参传递给形参x,yx,y的值分别为的值分别为3434和和2222 fun(10);/fun(10);/传递给形参传递给形参x,yx,y的值分别为的值分别为1010和和8 8 fun();/fun();/传递给形参传递给形参x,yx,y的值分别为的值分别为1515和和8 8 3.5 3.5 带默认形参值的函数带默认形参值的函数l特点特点l若函数具有多个形参,则缺省形参值必须自右向左连若函数具有多个形参,则缺省形参值必须自右向左连续定义,并且在一个缺省形参值的右边不能有未指定续定义,并且在

26、一个缺省形参值的右边不能有未指定缺省值的参数缺省值的参数l在调用一个函数时,如果省去了某个实参,则直到最在调用一个函数时,如果省去了某个实参,则直到最右端的实参都要省去右端的实参都要省去void add_int(int a=1,int b=5,int c=10);/正确的函数声明void add_int(int a,int b=5,int c=10);/正确的函数声明void add_int(int a=1,int b,int c=10);/错误的函数声明void add_int(int a=1,int b,int c)/错误的函数声明假如声明:int fun(int a,float b=5.

27、0,char c=.,int d=10);采用如下调用形式是错误的:fun(8,4);/语法错误3.5 3.5 带默认形参值的函数带默认形参值的函数l特点特点l缺省形参值的说明必须出现在函数调用之前缺省形参值的说明必须出现在函数调用之前例如:int sub(int x=8,int y=3);/缺省形参值在函数原型中给出void main(void)sub(20,15);/20-15 sub(10);/10-3 sub();/8-3int sub(int x,int y)/缺省形参值没有在函数定义时给出 return x-y;3.5 3.5 带默认形参值的函数带默认形参值的函数l特点特点l在同一

28、个作用域,一旦定义了缺省形参值,就不能再在同一个作用域,一旦定义了缺省形参值,就不能再定义它定义它l如果几个函数说明出现在不同的作用域内,则允许分如果几个函数说明出现在不同的作用域内,则允许分别为它们提供不同的缺省形参值别为它们提供不同的缺省形参值int fun(int a,float b,char,int d=10);int fun(int a,float b,char c=.,int d=10);/错误:企图再次定义缺省参数c和dint fun(int a=6,float b=5.0,char c=.,int d=10);void main(void)int fun(int a=3,flo

29、at b=2.0,char c=n,int d=20);coutfun()endl;/fun函数使用局部缺省参数值 3.5 3.5 带默认形参值的函数带默认形参值的函数l特点特点l对形参缺省值的指定可以是初始化表达式,甚至可以包对形参缺省值的指定可以是初始化表达式,甚至可以包含函数调用含函数调用l在函数原型中给出了形参的缺省值时,形参名可以省略在函数原型中给出了形参的缺省值时,形参名可以省略l形参的默认值可以是全局常量、全局变量、表达式、函形参的默认值可以是全局常量、全局变量、表达式、函数调用,但不能为局部变量数调用,但不能为局部变量/d参数的缺省值是函数调用int fun(int a,flo

30、at b=5.0,char c=.,int d=sub(20,15);int fun(int,float=5.0,char=.,int=sub(20,15);/下例不合法:void fun()int k;void g(int x=k);/k为局部变量3.6 3.6 作用域与生存周期作用域与生存周期1 1、标识符的作用域、标识符的作用域l局部作用域(块作用域)局部作用域(块作用域)l函数作用域函数作用域l函数原型作用域函数原型作用域l文件作用域文件作用域 l名字空间作用域名字空间作用域表表3-1 四种作用域的作用范围四种作用域的作用范围作用域 作 用 范 围 块作用域 从块内标识符定义开始,到块

31、结束处为止 函数作用域 从函数内标识符定义开始,到函数结束为止 函数原型作用域 从标识符定义开始,到函数原型声明结束 文件作用域 从标识符定义开始,到整个源文件结束(可用 extern 进行扩展)【例例3-153-15】块作用域示例块作用域示例#include#include using namespace std;using namespace std;intint main()main()/1/1 intint i i,j;,j;/2/2 i i=1;j=2;=1;j=2;/3/3 intint a,b;a,b;/4/4 a=5;a=5;/5/5 b=j;b=j;/6/6 cout a t

32、 b endl;/7 cout a t b endl;/7 /8/8 cout i “t”j endl;cout i “t”j endl;/9/9 return 0;return 0;/10/10/11/11【例例3-163-16】块作用域示例块作用域示例#include#include using namespace std;using namespace std;int main()int main()/1/1 /2/2 int x(3),y(5);int x(3),y(5);/3/3 for(;x 0;x-)for(;x 0;x-)/4/4 /5/5 int x(4);int x(4);

33、/6/6 cout x t y endl;cout x t y endl;/7/7 /8/8 cout endl x t y endl;/9 cout endl x t y endl;/9 return 0;return 0;/10/10 /11/11运行结果:45454505【例例3-173-17】文件作用域示例文件作用域示例#include#include using namespace std;using namespace std;intint i i;/全局变量,文件作用域全局变量,文件作用域intint main()main()i i=5;=5;intint i i;/局部变量,块

34、作用局部变量,块作用域域 i i=7;=7;coutcout i i=i i endlendl;/输出输出 coutcout “i i=”=”i i endlendl;/输出输出 return 0;return 0;3.6 3.6 作用域与生存周期作用域与生存周期2 2、局部变量和全局变量、局部变量和全局变量l局部变量局部变量l在一个函数内部说明的变量是内部变量,局部变量是在一个函数内部说明的变量是内部变量,局部变量是在函数内作定义说明的,它只在该函数范围内有效在函数内作定义说明的,它只在该函数范围内有效l全局变量全局变量l全局变量也称为外部变量,它是在函数外部定义的变全局变量也称为外部变量,

35、它是在函数外部定义的变量量【例例3-193-19】使用局部变量示例使用局部变量示例#include#include intint f1(f1(intint a)/a)/*函数函数f1f1*/intint b,cb,c;/a,b,ca,b,c作用域作用域intint f2(f2(intint x)/x)/*函数函数f2f2*/int y,z;int y,z;/x,y,z /x,y,z作用域作用域void main()void main()int m,n;int m,n;l主函数中定义的变量也只能在主函主函数中定义的变量也只能在主函数中使用,不能在其他函数中使用。数中使用,不能在其他函数中使用。l

36、形参变量是属于被调函数的局部变形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局量,实参变量是属于主调函数的局部变量。部变量。l允许在不同的函数中使用相同的变允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发不同的单元,互不干扰,也不会发生混淆。生混淆。l在复合语句中也可定义变量,其作在复合语句中也可定义变量,其作用域只在复合语句范围内。用域只在复合语句范围内。【例例3-223-22】全局变量与局部变量使用示例全局变量与局部变量使用示例#include#include using namespace std;usi

37、ng namespace std;int vs(int l,int w)int vs(int l,int w)extern int h;extern int h;int v;/int v;/定义局部变量定义局部变量v v v=l v=l*w w*h;/h;/引用全局变量引用全局变量w w、h h和局部变量和局部变量v v、l l extern v;extern v;void main()void main()extern int w,h;extern int w,h;int l=5;int l=5;/定义局部变量定义局部变量l l coutvs(l,w);coutvs(l,w);int l=3

38、,w=4,h=5;/int l=3,w=4,h=5;/定义全局变量定义全局变量l l、w w、h h3.6 3.6 作用域与生存周期作用域与生存周期3 3、动态变量和静态变量、动态变量和静态变量l变量在内存中的存储变量在内存中的存储l一个程序将操作系统分配给其运行的内存块分为一个程序将操作系统分配给其运行的内存块分为4 4个个区域:代码区、全局数据区、栈区、堆区区域:代码区、全局数据区、栈区、堆区l动态变量动态变量l用来在程序执行过程中,定义变量或调用函数时分配用来在程序执行过程中,定义变量或调用函数时分配存储空间存储空间l静态变量静态变量l在程序开始执行时就分配存储空间,在程序运行期间在程序

39、开始执行时就分配存储空间,在程序运行期间一直占用,运行结束时释放一直占用,运行结束时释放3.6 3.6 作用域与生存周期作用域与生存周期4 4、变量的存储类型、变量的存储类型l所谓存储类型,是指变量占用内存空间的方所谓存储类型,是指变量占用内存空间的方式,式,也称为存储方式也称为存储方式l变量的存储方式可分为静态存储和动态存储两种变量的存储方式可分为静态存储和动态存储两种l对变量的存储类型说明对变量的存储类型说明l格式格式auto:自动变量。register:寄存器变量。extern:外部变量。static:静态变量存储类型说明符 数据类型说明符 变量名,变量名,;3.6 3.6 作用域与生存

40、周期作用域与生存周期5 5、变量的存储类型、变量的存储类型l外部类型外部类型l用关键字用关键字externextern声明的变量称为外部变量声明的变量称为外部变量l外部变量是全局变量,具有文件作用域外部变量是全局变量,具有文件作用域l用用externextern声明外部变量的目的有两个声明外部变量的目的有两个l扩展当前文件中全局变量的作用域;扩展当前文件中全局变量的作用域;l其他文件中全局变量的作用域扩展到当前文件中其他文件中全局变量的作用域扩展到当前文件中【例例3-253-25】求两个整数的最大值求两个整数的最大值#include#include using namespace std;us

41、ing namespace std;extern extern intint a,b;a,b;/第第3 3行声明行声明a a、b b为外部变量为外部变量intint main()main()intint c;c;int max(int x,int y);int max(int x,int y);c=max(a,b);c=max(a,b);/第第7 7行使用全局变量行使用全局变量a a、b b cout max=c endl;cout max=c y?x:y;z=x y?x:y;return z;return z;3.6 3.6 作用域与生存周期作用域与生存周期6 6、变量的存储类型、变量的存储

42、类型l静态类型静态类型l静态变量的类型说明符是静态变量的类型说明符是staticstaticl静态变量属于静态存储方式静态变量属于静态存储方式,但是属于静态存储方式但是属于静态存储方式的量不一定就是静态变量的量不一定就是静态变量l静态变量根据定义在函数内还是函数外,分为静态局静态变量根据定义在函数内还是函数外,分为静态局部变量与静态全局变量。部变量与静态全局变量。【例例3-263-26】静态局部变量使用示例静态局部变量使用示例#include#include using namespace std;using namespace std;void main()void main()intint

43、 i i;void f();/void f();/*函数说明函数说明*/for(for(i i=1;i=5;i+)=1;i=5;i+)f();/f();/*函数调用函数调用*/void f()/void f()/*函数定义函数定义*/auto auto intint j=0;j=0;+j;+j;coutcoutj;j;【例例3-273-27】静态全局变量使用示例静态全局变量使用示例#include#include using namespace std;using namespace std;void fn();void fn();static static intint n;/n;/定义静态

44、全局变量定义静态全局变量intint main()main()n=20;n=20;coutcout n n endlendl;fn();fn();return 0;return 0;void fn()void fn()n+;n+;coutcout n n endlendl;3.6 3.6 作用域与生存周期作用域与生存周期7 7、生存期、生存期l静态生存期静态生存期l这种生命期与程序的运行期相同,只要程序一开始运这种生命期与程序的运行期相同,只要程序一开始运行,这种生命期的变量就存在,当程序结束时,其生行,这种生命期的变量就存在,当程序结束时,其生命期就结束命期就结束l局部生存期局部生存期l在函

45、数内部声明的变量或者块中声明的变量具有局部在函数内部声明的变量或者块中声明的变量具有局部生命期生命期l动态生存期动态生存期l用用newnew声明获得动态存储空间,在堆中分配某一类型声明获得动态存储空间,在堆中分配某一类型变量所占的存储空间,并将首地址赋给指针变量所占的存储空间,并将首地址赋给指针课堂测试课堂测试1 1、#include#includeusing namespace std;using namespace std;void fun();void fun();void main()void main()fun();fun();fun();fun();void fun()void f

46、un()staticstatic int int a a=1;=1;int int i i=5;=5;a a+;+;i i+;+;couti=couti=i i,a=,a=a aendl;endl;#include#includeusing namespace std;using namespace std;int i=1;/int i=1;/void main(void)void main(void)static int a;/static int a;/int b=-10;/int b=-10;/int c=0;int c=0;void other(void);void other(voi

47、d);cout-MAIN-n;cout-MAIN-n;cout i:i a:a b:b c:cout i:i a:a b:b c:cendl;cendl;c=c+8;other();c=c+8;other();cout-MAIN-n;cout-MAIN-n;cout i:i a:a b:b c:cout i:i a:a b:b c:cendl;cendl;i=i+10;other();i=i+10;other();2.课堂测试课堂测试void other(void)void other(void)static int a=2;static int a=2;static int b;static

48、 int b;int c=10;int c=10;a=a+2;i=i+32;c=c+5;a=a+2;i=i+32;c=c+5;cout-OTHER-n;cout-OTHER-n;cout i:i a:a b:b c:cout i:i a:a b:b c:cendl;cendl;b=a;b=a;-MAIN-i:1 a:0 b:-10 c:0-OTHER-i:33 a:4 b:0 c:15-MAIN-i:33 a:0 b:-10 c:8-OTHER-i:75 a:6 b:4 c:15运行结果:运行结果:3.6 3.6 作用域与生存周期作用域与生存周期8 8、名字空间、名字空间l一个命名空间将不同的

49、标识符集合在一个命名一个命名空间将不同的标识符集合在一个命名作用域(作用域(named scopenamed scope)内)内l为了解决命名冲突为了解决命名冲突l例如,声明一个命名空间例如,声明一个命名空间NSNS:namspace NS namspace NS class File;class File;void Fun();void Fun();l则引用标识符的方式如下,则引用标识符的方式如下,NS:File obj;NS:File obj;NS:Fun();NS:Fun();l没有声明命名空间的标识符都处于无名的命名没有声明命名空间的标识符都处于无名的命名空间中空间中【例例3-283-

50、28】使用使用stdstd名字空间名字空间#include#include int main()int main()std:std:coutComing to you from cout.endl;coutComing to you from cout.endl;return 0;return 0;#include#include using namespace std;using namespace std;int main()int main()coutComing to you from coutComing to you from cout.endl;cout.endl;return

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(青岛理工大学课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|