欢迎来到天天文库
浏览记录
ID:57038719
大小:175.50 KB
页数:25页
时间:2020-07-27
《面向对象程序设计语言C课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章C++程序的结构丘志杰电子科技大学计算机学院软件学院7/29/202116.1变量的类型除了按数据类型区分变量外,根据变量定义的位置,可以把变量分成全局变量与局部变量。全局变量是指定义在函数体外部的变量,它能被所有函数使用。局部变量是指定义在函数或复合语句中的变量,只能在函数或复合语句中使用。intg=100000;intsum(intx,inty){intsum=0;for(inti=x;i<=y;i++)sum=sum+i;returnsum;}voidmain(){intx=1,y=100;cout<2、345678910111213g为全局变量sum()中x、y为局部变量main()中的x、y为局部变量6.1.2变量的存储类型C++中变量有auto、extern、register、static四种存储类型。1.auto说明符auto说明符说明定义的是一个局部变量。局部变量默认存储类型为auto,所以在程序中很少使用auto说明符说明。2.register说明符register说明符在定义变量时说明此变量存储在CPU中的寄存器中,以加快存取速度。一般编译器自己选择几个变量采用寄存器存储,不需要在程序中声明。3.extern说明符如果一个完整的计算机程序很3、大,分成多个模块,放在不同的文件中,分开编译成目标文件,最后连接成一个完整的可执行代码。对于所有模块共同使用的全局变量,如果在所有的模块中都定义,在连接时就会出错。解决办法是只在一个模块中定义全局变量,在其他模块中用extern说明这是一个“外来”的全局变量。/****************************p6_1_p.cpp**主程序****************************/#includeusingnamespacestd;externvoidp1dispG();externvoidp2dispG();e4、xternvoidp2dispg();intG=0,g=0;voidmain(){p1dispG();p2dispG();p2dispg();cout<<"inpG="<usingnamespacestd;externintG;voidp1dispG(){G=11;cout<<"inp1G="<5、iostream>usingnamespacestd;externintG;externintg;voidp2dispG(){G=22;cout<<"inp2G="<6、全局静态变量和局部静态变量。当声明全局静态变量时,全局静态变量只能供本模块使用,不能被其它模块再声明为extern变量。例如:将程序p6_1_p.cpp中的全局变量声明为:staticintG=0;那么在其他模块中就不能声明为:externintG;//错误,G已经是一个static变量;static数据类型变量名=初值;注意:当一个局部变量声明为static变量,它既具有局部变量的性质:只能在函数体局部存取;又具有全局变量的性质:函数多次进入,变量的值只初始化一次。因此静态局部变量实质是一个供函数局部存取的全局变量。/*****************7、******************6_2.cpp**静态局部变量的使用***********************************/#includeusingnamespacestd;voidfun(){staticintn;intm=0;n++;m++;cout<<"m="<8、类型static型变量静态局部变量n只是在函数fun()第一次进入时初始化0,随
2、345678910111213g为全局变量sum()中x、y为局部变量main()中的x、y为局部变量6.1.2变量的存储类型C++中变量有auto、extern、register、static四种存储类型。1.auto说明符auto说明符说明定义的是一个局部变量。局部变量默认存储类型为auto,所以在程序中很少使用auto说明符说明。2.register说明符register说明符在定义变量时说明此变量存储在CPU中的寄存器中,以加快存取速度。一般编译器自己选择几个变量采用寄存器存储,不需要在程序中声明。3.extern说明符如果一个完整的计算机程序很
3、大,分成多个模块,放在不同的文件中,分开编译成目标文件,最后连接成一个完整的可执行代码。对于所有模块共同使用的全局变量,如果在所有的模块中都定义,在连接时就会出错。解决办法是只在一个模块中定义全局变量,在其他模块中用extern说明这是一个“外来”的全局变量。/****************************p6_1_p.cpp**主程序****************************/#includeusingnamespacestd;externvoidp1dispG();externvoidp2dispG();e
4、xternvoidp2dispg();intG=0,g=0;voidmain(){p1dispG();p2dispG();p2dispg();cout<<"inpG="<usingnamespacestd;externintG;voidp1dispG(){G=11;cout<<"inp1G="<5、iostream>usingnamespacestd;externintG;externintg;voidp2dispG(){G=22;cout<<"inp2G="<6、全局静态变量和局部静态变量。当声明全局静态变量时,全局静态变量只能供本模块使用,不能被其它模块再声明为extern变量。例如:将程序p6_1_p.cpp中的全局变量声明为:staticintG=0;那么在其他模块中就不能声明为:externintG;//错误,G已经是一个static变量;static数据类型变量名=初值;注意:当一个局部变量声明为static变量,它既具有局部变量的性质:只能在函数体局部存取;又具有全局变量的性质:函数多次进入,变量的值只初始化一次。因此静态局部变量实质是一个供函数局部存取的全局变量。/*****************7、******************6_2.cpp**静态局部变量的使用***********************************/#includeusingnamespacestd;voidfun(){staticintn;intm=0;n++;m++;cout<<"m="<8、类型static型变量静态局部变量n只是在函数fun()第一次进入时初始化0,随
5、iostream>usingnamespacestd;externintG;externintg;voidp2dispG(){G=22;cout<<"inp2G="<6、全局静态变量和局部静态变量。当声明全局静态变量时,全局静态变量只能供本模块使用,不能被其它模块再声明为extern变量。例如:将程序p6_1_p.cpp中的全局变量声明为:staticintG=0;那么在其他模块中就不能声明为:externintG;//错误,G已经是一个static变量;static数据类型变量名=初值;注意:当一个局部变量声明为static变量,它既具有局部变量的性质:只能在函数体局部存取;又具有全局变量的性质:函数多次进入,变量的值只初始化一次。因此静态局部变量实质是一个供函数局部存取的全局变量。/*****************7、******************6_2.cpp**静态局部变量的使用***********************************/#includeusingnamespacestd;voidfun(){staticintn;intm=0;n++;m++;cout<<"m="<8、类型static型变量静态局部变量n只是在函数fun()第一次进入时初始化0,随
6、全局静态变量和局部静态变量。当声明全局静态变量时,全局静态变量只能供本模块使用,不能被其它模块再声明为extern变量。例如:将程序p6_1_p.cpp中的全局变量声明为:staticintG=0;那么在其他模块中就不能声明为:externintG;//错误,G已经是一个static变量;static数据类型变量名=初值;注意:当一个局部变量声明为static变量,它既具有局部变量的性质:只能在函数体局部存取;又具有全局变量的性质:函数多次进入,变量的值只初始化一次。因此静态局部变量实质是一个供函数局部存取的全局变量。/*****************
7、******************6_2.cpp**静态局部变量的使用***********************************/#includeusingnamespacestd;voidfun(){staticintn;intm=0;n++;m++;cout<<"m="<8、类型static型变量静态局部变量n只是在函数fun()第一次进入时初始化0,随
8、类型static型变量静态局部变量n只是在函数fun()第一次进入时初始化0,随
此文档下载收益归作者所有