南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,基础篇)07 过程(功能)抽象——函数(标识符作用域与变量生存期)

七、过程(功能)抽象 一一函数 (深入话题
七、过程(功能)抽象 --函数 (深入话题)

主要内容 ■标识符的作用域 ■变量的生存期 ·内联函数 ·带缺省值的形式参数 ■函数名重载
主要内容 ◼ 标识符的作用域 ◼ 变量的生存期 ◼ 内联函数 ◼ 带缺省值的形式参数 ◼ 函数名重载

标识符的作用域概述 不同的程序实体一定要取不同的名字吗? 为了对程序中的实体的名字进行管理,引进 了标识符的作用域的概念: 一个定义了的标识符的有效范围(能被访问的程 序段 。标识符的作用域与它的定义位置有关。 作用域不相交的两个标识符(标识不同的实 体)可以相同,即,在一些情况下,可以用 相同的标识符来标识不同的程序实体
标识符的作用域概述 ◼ 不同的程序实体一定要取不同的名字吗? ◼ 为了对程序中的实体的名字进行管理,引进 了标识符的作用域的概念: • 一个定义了的标识符的有效范围(能被访问的程 序段)。 • 标识符的作用域与它的定义位置有关。 ◼ 作用域不相交的两个标识符(标识不同的实 体)可以相同,即,在一些情况下,可以用 相同的标识符来标识不同的程序实体

C++标识符的作用域 ■ C++把标识符的作用域分成若干类,其中 包括: ·局部作用域 全局作用域 。结构/类作用域 文件作用域 函数作用域 函数原型作用域 名空间作用域
C++标识符的作用域 ◼ C++把标识符的作用域分成若干类,其中 包括: • 局部作用域 • 全局作用域 • 结构/类作用域 • 文件作用域 • 函数作用域 • 函数原型作用域 • 名空间作用域

局部作用域 ■局部作用域是指 在函数定义或复合语句中、从标识符的定义点开 始到函数定义或复合语句结束之间的程序段。 以下标识符具有局部作用域: ·局部变量名 ·局部常量名 ·函数的形参名
局部作用域 ◼ 局部作用域是指 • 在函数定义或复合语句中、从标识符的定义点开 始到函数定义或复合语句结束之间的程序段。 ◼ 以下标识符具有局部作用域: • 局部变量名 • 局部常量名 • 函数的形参名

void f(intn)/n的有效范围从此开始一直到f函数体结束 x++;//Error n++: int×=0;/x的有效范围从此开始一直到f函数体结束 X++; n++; 111”111 } int main() {intx;/x的有效范围从此开始一直到main函数体结束 intn;/n的有效范围从此开始一直到main函数体结束 ×=10; cin > n f(n); 函数f和main中的变量x、n是不同的变量,只是 名字相同而已!
void f(int n) //n的有效范围从此开始一直到f函数体结束 { x++; //Error n++; int x=0; //x的有效范围从此开始一直到f函数体结束 x++; n++; ....... } int main() { int x; //x的有效范围从此开始一直到main函数体结束 int n; //n的有效范围从此开始一直到main函数体结束 x = 10; cin >> n; f(n); ...... } ◼ 函数f和main中的变量x、n是不同的变量,只是 名字相同而已!

局部作用域有时是一个潜在作用域,如果在一个标识 符的局部作用域中包含内层复合语句,并且在该内层 复合语句中定义了一个同名的不同实体,则外层定义 的标识符的真正作用域应该是扣除内层同名标识符的 作用域之后所得到的作用域 void f() {intx;/外层x的定义 …×…/外层的x while(..x.)/外层的x {..X./外层的X, double x;/内层x的定义 不提倡这样用! .×../内层的× x../外层的x
◼ 局部作用域有时是一个潜在作用域,如果在一个标识 符的局部作用域中包含内层复合语句,并且在该内层 复合语句中定义了一个同名的不同实体,则外层定义 的标识符的真正作用域应该是扣除内层同名标识符的 作用域之后所得到的作用域。 void f() { int x; //外层x的定义 ... x ... //外层的x while ( ... x ...) //外层的x { ... x ... //外层的x, double x; //内层x的定义 ... x ... //内层的x } ... x ... //外层的x } 不提倡这样用!

全局作用域 ▣全局作用域是指 ·构成C++程序的所有模块(源文件)。 以下标识符具有全局作用域: ·全局变量名/对象名 。全局函数名(区别于类的成员函数) 全局类名(区别于在类中定义的类》 具有全局作用域的标识符能在程序的任何地方访 问。 使用全局标识符时,若该标识符的定义点在其它源文 件中或在本源文件中使用点之后,则在使用前需要声 明它们
全局作用域 ◼ 全局作用域是指 • 构成C++程序的所有模块(源文件)。 ◼ 以下标识符具有全局作用域: • 全局变量名/对象名 • 全局函数名(区别于类的成员函数) • 全局类名(区别于在类中定义的类) ◼ 具有全局作用域的标识符能在程序的任何地方访 问。 • 使用全局标识符时,若该标识符的定义点在其它源文 件中或在本源文件中使用点之后,则在使用前需要声 明它们

如果在某个局部作用域中定义了与某个全局标识 符同名的标识符,则该全局标识符的真正作用域 应该从其潜在作用域中扣掉与之同名的局部标识 符的作用域。 intx;/全局x的定义 void f() {.X.…/全局的x double x;/局部x的定义 ..×../局部的x
◼ 如果在某个局部作用域中定义了与某个全局标识 符同名的标识符,则该全局标识符的真正作用域 应该从其潜在作用域中扣掉与之同名的局部标识 符的作用域。 int x; //全局x的定义 void f() { ... x ... //全局的x double x; //局部x的定义 ... x ... //局部的x }

■ 在局部标识符的作用域中若要使用与其同名的全 局标识符,则需要用全局域选择符(:)对全局 标识符进行修饰(受限) double x;/外层x的定义 void f() {.…X.…/外层x的定义 intx;/内层x的定义 .×…/内层的x .:×.…/外层的x
◼ 在局部标识符的作用域中若要使用与其同名的全 局标识符,则需要用全局域选择符(::)对全局 标识符进行修饰(受限)。 double x; //外层x的定义 void f() { ... x ... //外层x的定义 int x; //内层x的定义 ... x ... //内层的x ... ::x ... //外层的x }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,基础篇)06 复合数据的描述——构造数据类型(基础).pptx
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,基础篇)05 过程(功能)抽象——函数(基础).pptx
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,基础篇)04 简单数据的描述——基本数据类型与表达式(深入).pptx
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,基础篇)03 程序的流程控制——语句.pptx
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,基础篇)02 简单数据的描述——基本数据类型与表达式(基础).pptx
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,基础篇)01 概述(陈家骏).pptx
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,下)第9章 SIMPowerSystem工具箱.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,下)第7章 信号处理工具箱.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,下)第5章 SIMULINK仿真工具箱.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,下)第4章 Matlab数值计算与符号计算.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,下)第3章 MATLAB绘图(图形图像处理).pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,下)第2章 MATLAB应用基础.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,下)第1章 系统环境.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,上)第6章 Matlab在信号处理中的应用.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,上)第4章 SIMULINK仿真.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,上)第3章 MATLAB图形图像处理(2/2).pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,上)第3章 MATLAB图形图像处理(1/2).pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,上)第2章 程序设计和M文件 2.4 M文件.pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,上)第2章 程序设计和M文件(2.3-2.5).pdf
- 聊城大学:《MATLAB语言及应用 MATLAB Language and Application》课程教学资源(课件讲稿,上)第2章 MATLAB的程序设计(2.1-2.2).pdf
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,基础篇)08 复合数据的描述——构造数据类型(指针及其应用).pptx
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)10 函数式&逻辑式程序设计(functional & logic programming).ppt
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)02 数据抽象与封装——对象与类.ppt
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)03 操作符重载.ppt
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)03-1 λ表达式.ppt
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)04 继承-派生类.ppt
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)05 泛型(类属)程序设计-模板.ppt
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)07 异常处理.ppt
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)08 消息(事件)驱动的应用程序设计.ppt
- 南京大学:《程序设计(C++)》课程教学资源(PPT课件讲稿,高级篇)09 转移构造函数&转移赋值操作符重载函数(move semantics).ppt
- MOBILE VISUAL CLOTHING SEARCH(南京大学:曹春).pdf
- Multi-Touch in the Air - Concurrent Micromovement Recognition Using RF Signals.pdf
- RF-Kinect - A Wearable RFID-based Approach Towards 3D Body Movement Tracking.pdf
- RF-ECG - Heart Rate Variability Assessment based on COTS RFID Tag Array.pdf
- Spin-Antenna - 3D Motion Tracking for Tag Array Labeled Objects via Spinning Antenna.pdf
- 《中国计算机学会通讯》:从“识别”到“感知”:基于 RFID 的可标记无源感知.pdf
- Spin-Antenna:3D Motion Tracking for Tag Array Labeled Objects via Spinning Antenna.pdf
- Thru-the-wall Eavesdropping on Loudspeakers via RFID by Capturing Sub-mm Level Vibration.pdf
- 电子科技大学:《计算机操作系统》课程教学资源(教学大纲).doc
- 电子科技大学:《软件技术基础 Fundamental of Software Technology》课程教学资源(教学大纲,刘民岷).pdf