西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第5章 程序结构

第5章程序结构 H 第5章程序结构 5.1作用域与可见性 5.,2生存期 53局部变量和全局变量 5.4静态成员 55友元 5.6常类型 5.7多文件结构 5.8编译预处理 BACK
第5章 程序结构 第5章 程序结构 5.1 作用域与可见性 5.2 生存期 5.3 局部变量和全局变量 5.4 静态成员 5.5 友元 5.6 常类型 5.7 多文件结构 5.8 编译预处理

第5章程序结构 H 5.1作用域与可见性 5.1.1作用域 作用域是一个标识符在程序正文中有效的区域。 C++的作用域有函数原型作用域、块作用域(亦称局 部作用域)和文件作用域。 1.函数原型作用域 函数原型作用域是C+程序中最小的作用域。前面 介绍过,在函数原型的声明中一定要包含参数的类型 声明
第5章 程序结构 5.1 作用域与可见性 5.1.1 作用域 作用域是一个标识符在程序正文中有效的区域。 C++的作用域有函数原型作用域、块作用域(亦称局 部作用域)和文件作用域。 1. 函数原型作用域 函数原型作用域是C++程序中最小的作用域。前面 介绍过,在函数原型的声明中一定要包含参数的类型 声明

第5章程序结构 H 这里参数的声明就属于函数原型作用域,它开始于 函数原型声明的左括号“(”,结束于右括号“)”。 例如,有如下函数声明 double area( double length double width) 由于形参 length和wdth只在括号之内有效,在程序 的其它地方无法引用这个标识符,如果要引用,必须重 新定义。例如: double area( double length; double width);/函数声明 length=10 width=5
第5章 程序结构 这里参数的声明就属于函数原型作用域,它开始于 函数原型声明的左括号“(” ,结束于右括号“)” 。 例如,有如下函数声明: double Area(double length,double width); 由于形参length和width只在括号之内有效,在程序 的其它地方无法引用这个标识符,如果要引用,必须重 新定义。例如: double Area(double length,double width); //函数声明 length=10; width=5;

第5章程序结构 H 这段代码会引起无定义的标识符编译错误。所以, 对于这种情况,标识符 length和 width实际上是可有可无 的,省去它,也决不会影响到程序的编译和运行结果。 例如 double area( double, double) 但是,考虑到程序的可读性,还是要在函数原型声 明时,给形参指定一个有意义的标识符,而且一般总 是与该函数定义时声明的参数标识符一致
第5章 程序结构 这段代码会引起无定义的标识符编译错误。所以, 对于这种情况,标识符length和width实际上是可有可无 的,省去它,也决不会影响到程序的编译和运行结果。 例如: double Area(double,double); 但是,考虑到程序的可读性,还是要在函数原型声 明时,给形参指定一个有意义的标识符,而且一般总 是与该函数定义时声明的参数标识符一致

H 第5章程序结构 例如 double area( double length, double width);∥函数声明 double area( double length, double width) )/-数定义
第5章 程序结构 例如: double Area(double length,double width); //函数声明 //... double Area(double length,double width) //函数定义 { //... }

H 第5章程序结构 2.块作用域 块作用域又称局部作用域。当标识符的声眀出现 在由一对花括号“{}"所括起来的程序(块)内时,则 此块中声明的标识符的作用域从声明处开始,一直到 块结束的花括号为止。为了理解块作用域,我们来看 一个例子: #include void mal int n
第5章 程序结构 2.块作用域 块作用域又称局部作用域。当标识符的声明出现 在由一对花括号“{}”所括起来的程序(块)内时,则 此块中声明的标识符的作用域从声明处开始,一直到 块结束的花括号为止。为了理解块作用域,我们来看 一个例子: #include void main( ) { int n;

H 第5章程序结构 for(int i=0; 1<5; 1++) Int m if(192) m作用域}i作用域〉n作用域 n++ m=n/2;∥错误,m未定义
第5章 程序结构 for(int i=0;i<5;i++) { int m; if(i%2) m作用域 i作用域 n作用域 n++; } m=n/2; //错误,m未定义 n=i; }

H 第5章程序结构 在这个例子中,函数体main()是一个块,for语句 之后的循环体又是一个较小的块。变量n和i的作用域 从声明处开始,到它所在的块,即整个函数体main() 结束处为止。变量m的作用域从声明处开始到它所在 的块,即循环体结束为止。因此,编译时m=n/2会出错, 因为它试图在m作用域之外引用m。而n=i是允许的, 因为此时还在i的作用域内。如果在上面的程序中加入 一个函数finl(),情况会怎么样呢?
第5章 程序结构 在这个例子中,函数体main( )是一个块,for语句 之后的循环体又是一个较小的块。变量n和i的作用域 从声明处开始,到它所在的块,即整个函数体main( ) 结束处为止。变量m的作用域从声明处开始到它所在 的块,即循环体结束为止。因此,编译时m=n/2会出错, 因为它试图在m作用域之外引用m。而n=i是允许的, 因为此时还在i的作用域内。如果在上面的程序中加入 一个函数fun1( ),情况会怎么样呢?

H 第5章程序结构 #include void main void fun1() /fun1()函数声明 n for(int 1=0; 1<5; 1++) int m if(192) n++
第5章 程序结构 #include void main( ) { void fun1( ); //fun1( )函数声明 int n; for(int i=0;i<5;i++) { int m; if(i%2) n++;

第5章程序结构 H m-n ∥错误,m未定义 fun1() /fnl()函数调用 void fun1() cout<<i="<<i<<endl ∥错误,i未定义
第5章 程序结构 } m=n/2; //错误,m未定义 fun1( ); //fun1( )函数调用 n=i; } void fun1( ) { cout<<"i="<<i<<endl; //错误,i未定义 }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第4章 类和对象.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第3章 数组.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第2章 函数.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第1章 C++简单程序设计.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第11章 Visual C++环境下Windows.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第10章 异常处理.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)目录 The C++ programming language(主讲:揣锦华).ppt
- 《软件形式化方法》期末考试模拟试题一.doc
- 《高质量C++编程指南》PDF电子资料(2001,v1.0,共十一章,林锐).pdf
- 《数据库自测试题》模拟试题一(附答案).doc
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》谐振电路.ppt
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》分析习题.doc
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》第11章 直流电源.ppt
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》复习.ppt
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》习题.doc
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》第8章 集成运算放大器.ppt
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》第7章 负反馈放大电路.ppt
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》第6章 放大电路分析基础(1/3).ppt
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》第6章 放大电路分析基础(3/3).ppt
- 海南大学:《计算机电子电路技术—电路与模拟电子部分》第6章 放大电路分析基础(2/3).ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第6章 指针与字符串.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第7章 继承与派生.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第8章 多态性.ppt
- 西安电子科技大学:《C++程序设计语言》课程电子教案(PPT教学课件)第9章 流类库与输入输出.ppt
- 深圳职业技术学院:《C语言程序设计》第一单元 C 语言的数据类型、运算符和表达式(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第十单元 链表(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第十一单元(1):文本文件的操作(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第十一单元(2):二进制文件的操作(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第十一单元(3):文件的定位操作和随即读写(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第二单元:顺序结构程序设计(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第三单元:选择结构程序设计(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第四单元:循环结构程序设计(1)(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第四单元(2):循环结构编程实训(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第五单元(1):数组的基础内容(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第五单元(2):数组的应用(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第五单元(3):数组的编程实训(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第五单元(4):二维数值型数组(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第五单元(5):字符型数组(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第五单元(6):字符数组的编程实训(乌云高娃).pdf
- 深圳职业技术学院:《C语言程序设计》第五单元(7):二维字符数组(乌云高娃).pdf