欢迎来到天天文库
浏览记录
ID:50082311
大小:389.00 KB
页数:32页
时间:2020-03-08
《C++面向对象程序设计教学课件曹静第03章 C++程序的结构.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章C++程序的结构3.1作用域和可见性3.2生存期3.3变量的存储类型3.4编译预处理和多文件结构项目设计2预处理及多文件结构2021/10/6C++面向对象程序设计3.1作用域和可见性3.1.1作用域3.1.2可见性2021/10/6C++面向对象程序设计3.1.1作用域作用域是标识符在程序中有效的范围块作用域当标识符的声明出现在由一对大括号所括起来的一段程序(块)内时,该标识符的作用域从声明点开始,到块结束的大括号处为止,该作用域的范围具有局部性。例如,如下代码:voidfun(inta)//a的作用域起始处{intb=1;/
2、/b的作用域起始处2021/10/6C++面向对象程序设计3.1.1作用域函数原型作用域函数原型作用域指的是在声明函数原型所指定的参数标识符的作用范围。if(a>b){intc;//c的作用域起始处c=a-b;cout<3、oto语句。文件作用域文件作用域是在所有函数定义之外声明的,其作用域从声明之处开始,直到文件结束。2021/10/6C++面向对象程序设计3.1.2可见性可见性是从对标识符的引用的角度来谈的概念。如果标识符在某处可见,则就可以在该处引用此标识符。程序运行到某一点能够引用到的标识符就是该处可见的标识符。作用域指的是标识符有效的范围,而可见性是分析在某一位置标识符的有效性。2021/10/6C++面向对象程序设计3.1.2可见性作用域可见性的一般规则是:标识符应声明在前,引用在后。在同一作用域中,不能声明同名的标识符。在没有互相包含关系的4、不同的作用域中声明的同名标识符互不影响。对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。2021/10/6C++面向对象程序设计3.1.2可见性作用域与可见性实例:#includeusingnamespacestd;inti;//变量i具有文件作用域voidmain(){i=5;//文件作用域的i赋初值{//子块1inti;//变量i具有块作用域i=7;cout<<"i="<5、2021/10/6C++面向对象程序设计3.2生存期3.2.1静态生存期3.2.2动态生存期2021/10/6C++面向对象程序设计3.2.1静态生存期静态生存期与程序的运行期相同,只要程序一开始运行,这种生命期的变量就存在,当程序结束时,其生命期就结束。具有静态生命期的变量在定义时就分配固定的存储单元,并一直保持不变,直至整个程序结束。如果要在函数内部的块作用域中声明具有静态生存期的变量,则要使用关键字static,例如下列语句声明的变量i便是具有静态生存期的变量,也称为静态变量:staticinti;静态生命期的变量,若无显式初始6、化,则自动初始化为0。2021/10/6C++面向对象程序设计3.2.2动态生存期在块作用域中声明的变量具有动态生存期,也可称为局部生存期变量。这种变量的生存期开始于程序执行经过其声明点时,而结束于其作用域结束处。具有动态生存期的变量是在程序执行过程中,使用它的时候才分配存储单元,使用完毕就立即释放。2021/10/6C++面向对象程序设计3.2.2动态生存期变量的动态生存期与可见性例子#includeusingnamespacestd;inti=1;//i具有文件作用域和静态生存期voidmain(void){/7、/a具有块作用域和静态生存期,局部可见。staticinta;intb=-10;//b,c具有块作用域和动态生存期。intc=0;voidother(void);cout<<"---MAIN---";cout<<"i:"<8、her();}voidother(void){staticinta=2;staticintb;//a,b具有块作用域和静态生存期,局部可见//只在第一次进入函数时被初始化。2021/10/6C++面向对象程序设计3.2.
3、oto语句。文件作用域文件作用域是在所有函数定义之外声明的,其作用域从声明之处开始,直到文件结束。2021/10/6C++面向对象程序设计3.1.2可见性可见性是从对标识符的引用的角度来谈的概念。如果标识符在某处可见,则就可以在该处引用此标识符。程序运行到某一点能够引用到的标识符就是该处可见的标识符。作用域指的是标识符有效的范围,而可见性是分析在某一位置标识符的有效性。2021/10/6C++面向对象程序设计3.1.2可见性作用域可见性的一般规则是:标识符应声明在前,引用在后。在同一作用域中,不能声明同名的标识符。在没有互相包含关系的
4、不同的作用域中声明的同名标识符互不影响。对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。2021/10/6C++面向对象程序设计3.1.2可见性作用域与可见性实例:#includeusingnamespacestd;inti;//变量i具有文件作用域voidmain(){i=5;//文件作用域的i赋初值{//子块1inti;//变量i具有块作用域i=7;cout<<"i="<5、2021/10/6C++面向对象程序设计3.2生存期3.2.1静态生存期3.2.2动态生存期2021/10/6C++面向对象程序设计3.2.1静态生存期静态生存期与程序的运行期相同,只要程序一开始运行,这种生命期的变量就存在,当程序结束时,其生命期就结束。具有静态生命期的变量在定义时就分配固定的存储单元,并一直保持不变,直至整个程序结束。如果要在函数内部的块作用域中声明具有静态生存期的变量,则要使用关键字static,例如下列语句声明的变量i便是具有静态生存期的变量,也称为静态变量:staticinti;静态生命期的变量,若无显式初始6、化,则自动初始化为0。2021/10/6C++面向对象程序设计3.2.2动态生存期在块作用域中声明的变量具有动态生存期,也可称为局部生存期变量。这种变量的生存期开始于程序执行经过其声明点时,而结束于其作用域结束处。具有动态生存期的变量是在程序执行过程中,使用它的时候才分配存储单元,使用完毕就立即释放。2021/10/6C++面向对象程序设计3.2.2动态生存期变量的动态生存期与可见性例子#includeusingnamespacestd;inti=1;//i具有文件作用域和静态生存期voidmain(void){/7、/a具有块作用域和静态生存期,局部可见。staticinta;intb=-10;//b,c具有块作用域和动态生存期。intc=0;voidother(void);cout<<"---MAIN---";cout<<"i:"<8、her();}voidother(void){staticinta=2;staticintb;//a,b具有块作用域和静态生存期,局部可见//只在第一次进入函数时被初始化。2021/10/6C++面向对象程序设计3.2.
5、2021/10/6C++面向对象程序设计3.2生存期3.2.1静态生存期3.2.2动态生存期2021/10/6C++面向对象程序设计3.2.1静态生存期静态生存期与程序的运行期相同,只要程序一开始运行,这种生命期的变量就存在,当程序结束时,其生命期就结束。具有静态生命期的变量在定义时就分配固定的存储单元,并一直保持不变,直至整个程序结束。如果要在函数内部的块作用域中声明具有静态生存期的变量,则要使用关键字static,例如下列语句声明的变量i便是具有静态生存期的变量,也称为静态变量:staticinti;静态生命期的变量,若无显式初始
6、化,则自动初始化为0。2021/10/6C++面向对象程序设计3.2.2动态生存期在块作用域中声明的变量具有动态生存期,也可称为局部生存期变量。这种变量的生存期开始于程序执行经过其声明点时,而结束于其作用域结束处。具有动态生存期的变量是在程序执行过程中,使用它的时候才分配存储单元,使用完毕就立即释放。2021/10/6C++面向对象程序设计3.2.2动态生存期变量的动态生存期与可见性例子#includeusingnamespacestd;inti=1;//i具有文件作用域和静态生存期voidmain(void){/
7、/a具有块作用域和静态生存期,局部可见。staticinta;intb=-10;//b,c具有块作用域和动态生存期。intc=0;voidother(void);cout<<"---MAIN---";cout<<"i:"<
8、her();}voidother(void){staticinta=2;staticintb;//a,b具有块作用域和静态生存期,局部可见//只在第一次进入函数时被初始化。2021/10/6C++面向对象程序设计3.2.
此文档下载收益归作者所有