当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

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

资源类别:文库,文档格式:PPTX,文档页数:54,文件大小:210.4KB,团购合买
◼ 标识符的作用域 ◼ 变量的生存期 ◼ 内联函数 ◼ 带缺省值的形式参数 ◼ 函数名重载
点击下载完整版文档(PPTX)

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

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

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

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

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

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

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 }

点击下载完整版文档(PPTX)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共54页,可试读18页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有