第2章:VC程序设计基础-变量与函数.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第2章:VC程序设计基础-变量与函数.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 程序设计 基础 变量 函数
- 资源描述:
-
1、2022-8-51 2.1 2.1 变量的生存期与作用域变量的生存期与作用域 2.2 2.2 指针与引用指针与引用 2.3 2.3 函数的声明与调用函数的声明与调用 2.4 2.4 函数参数的传递函数参数的传递 本章从变量的本章从变量的五个要素五个要素着手,围绕它讲了变量的各种着手,围绕它讲了变量的各种生存期生存期和和作用域作用域。另外还对一种特殊的变量。另外还对一种特殊的变量地址变量地址变量进行了讲解。进行了讲解。本章主要讲了与函数有关的本章主要讲了与函数有关的定义定义、实现实现以及以及调用调用的三种方式。掌的三种方式。掌握了变量与函数,就把程序设计的基本把握住了,因此本章属于握了变量与函数
2、,就把程序设计的基本把握住了,因此本章属于VCVC程序设计的程序设计的基础知识基础知识。2022-8-522.1.1 2.1.1 变量的五要素变量的五要素2.1.2 2.1.2 VCVC程序的存储组织程序的存储组织 2.1.3 2.1.3 变量作用域及其分类变量作用域及其分类 2.1.4 2.1.4 一个一个VCVC多文件应用程序的实现多文件应用程序的实现2.1.5 2.1.5 变量生存期及其分类变量生存期及其分类 2.1.6 2.1.6 VCVC中的数据类型中的数据类型 2022-8-531 1变量的名称变量的名称2 2变量的数据类型变量的数据类型3 3变量的值变量的值4 4变量的地址变量的
3、地址5 5变量的存储类型变量的存储类型2022-8-54 一个一个VCVC程序编译运行后,将其对应的目标代码调程序编译运行后,将其对应的目标代码调到内存中。到内存中。目标代码主要包含目标代码主要包含操作符操作符和和操作数操作数,其中操作符存放在代码区,程序中处理的数据(操作数)其中操作符存放在代码区,程序中处理的数据(操作数)分别存放在分别存放在静态存储区静态存储区和和动态存储区动态存储区。一个一个VCVC程序可以使用的存储空间分为如下三个程序可以使用的存储空间分为如下三个部分部分:代码区代码区 静态存储区静态存储区 动态存储区动态存储区 2022-8-55 变量的作用域变量的作用域是指在程序
4、中变量的有效区域,它是指在程序中变量的有效区域,它是变量的活动空间。是变量的活动空间。“铁路警察各管一段铁路警察各管一段”,描述的就是,描述的就是铁路警察这些变量的作用域为各自的一段。在铁路警察这些变量的作用域为各自的一段。在VCVC中,变量中,变量的作用域有六种,从其作用范围的大小由小到大依次为的作用域有六种,从其作用范围的大小由小到大依次为:块作用域、函数作用域、类作用域、命名空间作块作用域、函数作用域、类作用域、命名空间作用域、文件作用域、程序作用域用域、文件作用域、程序作用域。变量的作用域取变量的作用域取决于变量的位置与声明的方式。决于变量的位置与声明的方式。2022-8-56块块指的
5、是由一对指的是由一对“”“”、“”“”括起来的程序括起来的程序段。段。在块中声明的变量具有块作用域,其作在块中声明的变量具有块作用域,其作用域从声明处开始,一直到块结束的花括号用域从声明处开始,一直到块结束的花括号为止为止。复合语句也是一个块,例如。复合语句也是一个块,例如ifif语句中语句中定义的变量只能在定义的变量只能在ifif语句中使用,语句中使用,forfor语句语句中定义的变量,包括括号表达式中定义的变中定义的变量,包括括号表达式中定义的变量,只能在量,只能在forfor语句中使用。语句中使用。下面演示块作用域的实例:下面演示块作用域的实例:2022-8-57【例例2-12-1】演示
6、块作用域的实例:输入两个数将】演示块作用域的实例:输入两个数将由大到小的顺序保存,并输出结果由大到小的顺序保存,并输出结果#include include iostreamiostream.h.h#include#include.hvoid main()void main()intint x,y;x,y;coutcout请输入两个整数:请输入两个整数:xy;xy;if(x=y)/xif(x=y)/x中保存较大的数,中保存较大的数,y y中保存较小的数中保存较小的数 intint t;/t t;/t为临时变量,其作用域为块作用域为临时变量,其作用域为块作用域t=x;/t=x;/交换交换x x与与
7、y y的值的值x=y;x=y;y=t;y=t;coutcoutx=x=setwsetw(6)xy=(6)xy=setwsetw(6)y(6)yendlendl;/setwsetw(6)(6)设置显示的宽度为设置显示的宽度为6 6个字符个字符 2022-8-58函数作用域是在某个函数内起作用函数作用域是在某个函数内起作用,例如函数,例如函数的形式参数具有函数作用域,它们起始于函数体的形式参数具有函数作用域,它们起始于函数体开始的第一个左花括号开始的第一个左花括号“”“”,结束于标志函数,结束于标志函数体结束的最后一个右花括号体结束的最后一个右花括号“”“”。可以说函数作用域是一种特殊的块作用域。
8、可以说函数作用域是一种特殊的块作用域。一个一个函数内可以有多个块,因此函数作用域大于函数内可以有多个块,因此函数作用域大于块作用域块作用域。2022-8-59【例例2-22-2】演示函数作用域的实例:将一个整数的】演示函数作用域的实例:将一个整数的各个位上的数字加起来(用函数完成),并输出各个位上的数字加起来(用函数完成),并输出结果。结果。#include#include iostreamiostream.h.h#include#include.hint SumDigitsint SumDigits(intint x)/x x)/x为形式参数,其作用域为该函数,在该函数外不可访问为形式参数,
9、其作用域为该函数,在该函数外不可访问 intint sum=0;/x sum=0;/x为函数内定义的变量,其作用域为该函数为函数内定义的变量,其作用域为该函数while(x)while(x)sum+=x%10;/sum+=x%10;/求个位数字求个位数字x/=10;/x/=10;/原数字缩小原数字缩小1010倍倍 return sum;/sumreturn sum;/sum保存各位数字之和保存各位数字之和 void main()void main()intint a;a;coutcout请输入一个整数:请输入一个整数:a;a;coutcoutSumDigitsSumDigits(a)n;/(a
10、)n;/输出各位数字之和输出各位数字之和 2022-8-510 下一章要讲类与对象,在类中包含下一章要讲类与对象,在类中包含成员变量成员变量与与成员函数成员函数。一个类中的成员变量在该类的任何成员。一个类中的成员变量在该类的任何成员函数中都可以访问,因此函数中都可以访问,因此类的作用域是整个类的定类的作用域是整个类的定义空间。义空间。4命名空间域 一个工程中的多个文件中有可能存在相同的变一个工程中的多个文件中有可能存在相同的变量,为了区别这些变量量,为了区别这些变量,可以将在不同文件中的相可以将在不同文件中的相同变量防到放到两个不同命名空间中,通过命名空同变量防到放到两个不同命名空间中,通过命
11、名空间来确定变量作用范围的作用区域叫间来确定变量作用范围的作用区域叫命名空间作用命名空间作用域域。该小节牵涉的东西请查阅相关资料。该小节牵涉的东西请查阅相关资料。2022-8-511在函数(以及下一章要讲的类)以外声明的、在函数(以及下一章要讲的类)以外声明的、并且用并且用“static”修饰的变量,具有文件作用域。修饰的变量,具有文件作用域。其作用域起始于变量的声明处,终止于文件的其作用域起始于变量的声明处,终止于文件的结束处,具有该作用域的变量又称全局变量结束处,具有该作用域的变量又称全局变量。该种类型的变量仅仅在该文件中是全局的,别该种类型的变量仅仅在该文件中是全局的,别的文件不能使用。
12、的文件不能使用。文件作用域又叫单文件作用域。文件作用域又叫单文件作用域。下面是文件作用域的实例下面是文件作用域的实例 2022-8-512【例2-3】文件作用域的实例。本程序定义了一个全局变量x,其作用域为整个文件。#include include iostreamiostream.h.h#include#include.hstatic static intint x=6903410;x=6903410;void Swap(void Swap(intint x,x,intint y)/y)/利用利用加法完成两个数的交换加法完成两个数的交换 x=x+y;/x=x+y;/此处的此处的x x与与y
13、y为函数作为函数作用域用域y=x-y;y=x-y;x=x-y;x=x-y;coutcoutSwap()Swap()函数中的函数中的x x为为xxendlendl;:x+;/:x+;/文件作用域的变量文件作用域的变量x x加加1 1 coutcout调用调用SwapSwap后文件作用域后文件作用域的的的的x x为为:xxendlendl;void main()void main()intint x;x;coutcout请输入一个整数:请输入一个整数:x;x;+x;/main+x;/main函数中的函数中的x x加加1 1coutcoutmain()main()函数中的函数中的x x值为值为xxe
14、ndlendl;coutcout文件作用域的的文件作用域的的x x为为:xxendlendl;Swap(x,10);Swap(x,10);2022-8-513如果一个变量的存储类别为外部(如果一个变量的存储类别为外部(extern)类型,类型,则称该变量为则称该变量为外部变量外部变量。外部变量带有赋值的声。外部变量带有赋值的声明称为明称为定义性说明定义性说明,外部变量不带有赋值的声明,外部变量不带有赋值的声明称为称为引用性说明引用性说明。extern char choice=y;/extern char choice=y;/定义性声明定义性声明extern float money;/exter
15、n float money;/引用性声明引用性声明定义性声明指示编译器程序定义性声明指示编译器程序为该外部变量分配内为该外部变量分配内存存,而引用性声明仅告诉编译程序,而引用性声明仅告诉编译程序该名字的变量该名字的变量在程序的其它地方已经有了定义性声明在程序的其它地方已经有了定义性声明。外部变量是全局变量、动态生存期变量,所以其外部变量是全局变量、动态生存期变量,所以其作用域大、寿命长。作用域大、寿命长。2022-8-514在大型复杂的应用程序中,一个任务常常划分成在大型复杂的应用程序中,一个任务常常划分成多个多个模块模块,每个模块是由不同的人员编写,当然,每个模块是由不同的人员编写,当然不同
16、的人编制的代码应放在不同的文件中,最后不同的人编制的代码应放在不同的文件中,最后要要把这些文件统一起来,放到一个工程中把这些文件统一起来,放到一个工程中。此时,。此时,在自己的文件中如何访问别的文件中的变量或函在自己的文件中如何访问别的文件中的变量或函数,又如何控制别人编的文件不能使用自己的变数,又如何控制别人编的文件不能使用自己的变量呢?量呢?这就牵涉到如何使用这就牵涉到如何使用程序作用域程序作用域的变量。的变量。2022-8-515【例例2-42-4】建立一个包含多个文件的程序。该工程】建立一个包含多个文件的程序。该工程的名字为的名字为ProgScopeProgScope 1建立一个空的控
17、制台工程建立一个空的控制台工程()单击()单击VCVC集成开发环境菜单集成开发环境菜单File|NewFile|New,选择选择ProjectsProjects选项。该选项选项。该选项下列出了下列出了VCVC可以开发的可以开发的1717种应用程序的类型。我们选择基于字符界面种应用程序的类型。我们选择基于字符界面的的“Win32 Win32 ConsloeConsloe Applications Applications”控制台应用程序类型。如图控制台应用程序类型。如图2.12.1所示。所示。()在()在“Project Name”Project Name”编辑框内填写工程的名字编辑框内填写工程
18、的名字“ProgScopeProgScope”,并并在在“Location”Location”编辑框内填写工程所在的目录。我们选择的是编辑框内填写工程所在的目录。我们选择的是“E:VCPP”E:VCPP”。这样,当最后生成一个应用程序时,就在这样,当最后生成一个应用程序时,就在E:VCPPE:VCPP的目的目录在生成一个新目录录在生成一个新目录ProgScopeProgScope ,在在“E:VCPP E:VCPP ProgScopeProgScope”目录目录下,存放的是与该工程有关的一系列文件。下,存放的是与该工程有关的一系列文件。()单击按钮()单击按钮“Ok”,Ok”,进入到图进入到图
19、2.22.2所示的界面中。该界面让用户选择所示的界面中。该界面让用户选择Win32 Win32 控制台应用程序的类型。我们选择第一种控制台应用程序的类型。我们选择第一种“A empty A empty projectproject”。单击单击“Finish”Finish”按钮,进入到图按钮,进入到图2.32.3所示的界面。所示的界面。()图()图2.32.3是对生成工程总的信息描述,没多大意义。单击是对生成工程总的信息描述,没多大意义。单击“OK”OK”按钮按钮生成生成ProgScopeProgScope应用程序框架。应用程序框架。2022-8-516【例【例2-42-4】建立一个包含多个文件
20、的程序。该】建立一个包含多个文件的程序。该工程工程的名字为的名字为ProgScope图图2.1 2.1 选择应用程序类型对话框选择应用程序类型对话框 2022-8-517【例【例2-42-4】建立一个包含多个文件的程序。该】建立一个包含多个文件的程序。该工程工程的名字为的名字为ProgScope图图2.2 2.2 选择控制台工程类型图选择控制台工程类型图2.3 2.3 生成的控制台工程信息生成的控制台工程信息 2022-8-518【例【例2-42-4】建立一个包含多个文件的程序。】建立一个包含多个文件的程序。该该工程的名字为工程的名字为ProgScope2在工程中增加在工程中增加C+源文件源文
21、件(1)(1)单击单击File|NewFile|New,选择选择FilesFiles选项卡,该选项下列出了选项卡,该选项下列出了VCVC可以使用的文可以使用的文件类型。我们选中件类型。我们选中C+Source FileC+Source File列表项列表项,并在右边的,并在右边的FileFile编辑框中编辑框中输入新建单文件输入新建单文件C+C+文件名称文件名称File1File1。同时选中同时选中“Add Add toProjecttoProject:”:”复复选框。如图选框。如图2.42.4所示。最后按所示。最后按OKOK按钮,返回到按钮,返回到Microsoft Microsoft Vi
22、suallVisuall C+C+的主窗口,在其中输入如下的程序源代码:的主窗口,在其中输入如下的程序源代码:#include iostream.hextern int File2_x;/引用性声明引用性声明,表示要使用别的文件中的表示要使用别的文件中的File2_x变量变量 void main()coutFile2.cpp中的变量中的变量File2_x=File2_xendl;2022-8-519【例【例2-42-4】建立一个包含多个文件的程序。该】建立一个包含多个文件的程序。该工程工程的名字为的名字为ProgScope(2)用同样的方法在工程)用同样的方法在工程ProgScope中添加另一
23、个源文件中添加另一个源文件File2.cpp,该文该文 件中的代码为:件中的代码为:extern extern intint File2_x=222;File2_x=222;/定义性声明变量定义性声明变量File2_xFile2_x,它是一个程序作用域的变量,别的文件它是一个程序作用域的变量,别的文件可以访问它,前面的可以访问它,前面的externextern可省略可省略 图图2.4 2.4 在工程中增加源文件在工程中增加源文件File1.File1.cpp cpp 2022-8-520【例【例2-42-4】建立一个包含多个文件的程序。该】建立一个包含多个文件的程序。该工程工程的名字为的名字为
24、ProgScope 3运行该工程运行该工程 按按“Ctrl+F5”,VC编译器编译、链接并运行编译器编译、链接并运行该程序,程序的运行结果为:该程序,程序的运行结果为:File2.cpp中的变量中的变量File2_x=222 自己尝试把自己尝试把File2.cpp中的语句中的语句“extern int File2_x=222;”前的前的extern改为改为static,看程序看程序还能不能运行,并分析原因。还能不能运行,并分析原因。2022-8-521变量的生存期变量的生存期指程序运行过程中变量占用内存或寄存器的时间指程序运行过程中变量占用内存或寄存器的时间它由声明变量时选择的它由声明变量时选
25、择的存储类型存储类型来决定的。来决定的。任何一个类型的变量都有自己的生存期,在生存任何一个类型的变量都有自己的生存期,在生存期内,变量将保持它的值不变,直到它被更新止。期内,变量将保持它的值不变,直到它被更新止。变量生存期的分类变量生存期的分类静态生存期静态生存期动态生存期动态生存期2022-8-522衡量一种程序设计语言优劣的衡量一种程序设计语言优劣的首要标准首要标准就是它所提供的数据就是它所提供的数据类型,能不能使用户把客观世界多种多样形态的实际问题方类型,能不能使用户把客观世界多种多样形态的实际问题方便而又灵活地抽象为适当数据类型加以处理。便而又灵活地抽象为适当数据类型加以处理。VC提供
展开阅读全文