书签 分享 收藏 举报 版权申诉 / 68
上传文档赚钱

类型第2章:VC程序设计基础-变量与函数.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3407769
  • 上传时间:2022-08-28
  • 格式:PPT
  • 页数:68
  • 大小:676.51KB
  • 【下载声明】
    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提供

    26、了丰富的数据类型,主要包括提供了丰富的数据类型,主要包括基本类型和非基本类基本类型和非基本类型。型。基本类型主要包括基本类型主要包括char(字符型)、字符型)、int(整型)、整型)、shor(短整型)、短整型)、long(长整型)、长整型)、bool(逻辑型)、逻辑型)、float(单单 精度实数)、精度实数)、double(双精度实数双精度实数)等。等。非基本类型主要包括非基本类型主要包括枚举型(用枚举型(用enum定义)、数组型、指定义)、数组型、指针型、空类型(针型、空类型(void)、)、结构体类型(用结构体类型(用struct定义)、公定义)、公用体类型(用用体类型(用union

    27、定义)和下一章要讲的类类型(用定义)和下一章要讲的类类型(用class定义)。定义)。2022-8-5232.2.1 2.2.1 地址与指针的概念地址与指针的概念 2.2.2 2.2.2 指针变量定义与赋值指针变量定义与赋值2.2.3 2.2.3 数组指针与指针数组数组指针与指针数组 2.2.4 2.2.4 动态内存分配:动态内存分配:newnew与与deletedelete2.2.5 2.2.5 引用引用2022-8-524VC语言拥有在运行时获得变量地址和操纵地址语言拥有在运行时获得变量地址和操纵地址的能力,这种的能力,这种可用来操纵地址的变量类型就是指可用来操纵地址的变量类型就是指针针。

    28、指针可以用于数组,用于内存访问,还可作。指针可以用于数组,用于内存访问,还可作为函数的参数。为函数的参数。指针就是地址,它也是一种数据类型指针就是地址,它也是一种数据类型,具有指针,具有指针类型的变量称为指针变量。类型的变量称为指针变量。指针变量也是一个变指针变量也是一个变量,只不过这个变量是量,只不过这个变量是用来放地址用来放地址的的,是用来存,是用来存放别的变量地址的。放别的变量地址的。2022-8-5251指针变量定义指针变量定义 VC中指针变量的定义形式为:中指针变量的定义形式为:数据类型名数据类型名 *指针变量名指针变量名;注意:注意:指针的类型为它所指向变量的类型,而不是指针本指针

    29、的类型为它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针的数据值都是身数据值的类型,任何一个指针的数据值都是unsigned unsigned long long intint型型。因此指向的类型不同,指针的类型就不同。因此指向的类型不同,指针的类型就不同。例如:例如:int a,*pa;double*p1;POINT*p2;CDC*pDC;int(*p3)6;int(*p4)();2022-8-5262指针变量的赋指针变量的赋 一个指针变量可以有一个指针变量可以有三种状态三种状态:1)未赋任何值,未赋任何值,“悬空悬空”状态状态(最严重的错最严重的错误误);2)被赋予被赋予NUL

    30、LNULL值,(指向一个安全的位置);值,(指向一个安全的位置);3)指向指向某一个变量(程序员必须用的操某一个变量(程序员必须用的操作)作)。2022-8-5272指针变量的赋值指针变量的赋值 int*ptr;float a=6.6,b,c3;float*pa=&a;/声明指针变量声明指针变量pa,并将浮点数并将浮点数a的地址赋给它的地址赋给它float*pb=NULL;/将指针指向安全的位置将指针指向安全的位置float*pc=c;/将数组将数组C的起始地址赋给指针变量的起始地址赋给指针变量pc下面是对一些指针变量赋值的例子:下面是对一些指针变量赋值的例子:2022-8-528【例例2-6

    31、2-6】指针使用】指针使用实例。实例。#include iostream.h#include void main()int x,y;int*ptr;/定义指针变量定义指针变量ptry=20;x=10;ptr=&x;/对指针变量对指针变量ptr初始化初始化,使得其指向变量使得其指向变量xcout变量变量x的值为的值为decxtptr所指的变量的值为所指的变量的值为*ptrendl;cout变量变量x的地址值为的地址值为hex&xtptr的值为的值为ptrn;ptr=&y;/对指针变量对指针变量ptr重新赋值重新赋值,使得其指向变量使得其指向变量ycout变量变量y的值为的值为decytptr所指

    32、的变量的值为所指的变量的值为*ptrendl;cout变量变量y的地址值为的地址值为hex&ytptr的值为的值为ptrn;2022-8-5291 1数组数组 数学上,常用一个向量(数学上,常用一个向量(vectorvector)表示一些相表示一些相关数据组成的序列,在程序设计语言中是用数组来关数据组成的序列,在程序设计语言中是用数组来表示的。表示的。数组是由一定数目的同类元素顺序排列而数组是由一定数目的同类元素顺序排列而成的结构类型数据成的结构类型数据(可把数组看成一种数据类型,(可把数组看成一种数据类型,一种一种复合数据类型复合数据类型)。在计算机中,一个数组在内)。在计算机中,一个数组在

    33、内存中占有一片连续的存储区域,存中占有一片连续的存储区域,VC的数组名就是的数组名就是这块存储空间的这块存储空间的地址地址。例如:例如:int score100;2022-8-5302 2数组指针数组指针数组指针是一个指针,该指针指向的是数据类数组指针是一个指针,该指针指向的是数据类型是数组类型,它存放的是数组的起始地址型是数组类型,它存放的是数组的起始地址。其实数组中的每一个元素都是一个变量,既然其实数组中的每一个元素都是一个变量,既然是变量,则他们就具有地址。是变量,则他们就具有地址。C+规定,规定,数组数组的地址用数组名来表示,即数组名表示的是第的地址用数组名来表示,即数组名表示的是第一

    34、个元素的地址一个元素的地址 。例如:例如:int(*ArrayPtr)100;2022-8-531 在在VC中,动态内存分配技术可以保证我们中,动态内存分配技术可以保证我们在程序运行的过程中,根据实际需要而在程序运行的过程中,根据实际需要而申请申请适量适量的内存,在使用结束后还可以的内存,在使用结束后还可以释放释放。这些功能的。这些功能的实现靠实现靠newnew和和deletedelete 函数。函数。1newnew运算运算 运算符运算符newnew的功能是的功能是动态分配内存动态分配内存,或者称为动,或者称为动态创建堆对象。其语法形式为:态创建堆对象。其语法形式为:new new 类型名类型

    35、名T T(初值列表);初值列表);2022-8-532例如例如:int*pi;/声明指向整型数的指针变量声明指向整型数的指针变量pifloat*pf;/声明指向浮点数的指针变量声明指向浮点数的指针变量pfchar*pc;/声明指向字符的指针变量声明指向字符的指针变量pcpi=new int;/动态产生一无名的整型变量,该变量动态产生一无名的整型变量,该变量 的地址保存在指针变量的地址保存在指针变量pi中中pf=new float(13.5);pc=new char3;2022-8-5332delete运算 运算符运算符new的功能是动态分配内存,当用户的功能是动态分配内存,当用户不再需要这些内

    36、存的时候,不再需要这些内存的时候,必须将其显式地释放必须将其显式地释放,释放释放new所分配空间的函数是所分配空间的函数是delete,其语法形其语法形式为:式为:delete 指针变量名指针变量名;例如:例如:delete *pi;/释放释放pi指向的动态指向的动态int变量变量delete *pf;/释放释放pf指向的动态指向的动态float变量变量delete pc;/释放释放pc指向的动态指向的动态char数组数组2022-8-534【例例2-7】newnew和和deletedelete实例测试。实例测试。void main()char*pString1=VC+6.0程序设计简明教程程

    37、序设计简明教程;/定义指向字符的指针变量定义指向字符的指针变量puts(pString1);/输出输出pString1所指向的字符串所指向的字符串int*pi;/定义指针变量定义指针变量pipi=new int;/在栈区分配四个字节的空间,起始地址给了在栈区分配四个字节的空间,起始地址给了pi*pi=35;/将将35赋给赋给pi所指向的无名变量所指向的无名变量printf(%8dn,*pi);/输出无名变量的值输出无名变量的值delete pi;/释放释放pi所指向的无名变量的内存空间,在用户程序有一个所指向的无名变量的内存空间,在用户程序有一个new一定得一定得有一个有一个deletecha

    38、r*pString2=new char40;/定义指向字符的指针变量定义指向字符的指针变量strcpy(pString2,pString1);coutpString2endl;strcat(pString2,-作者:雷惊刘作者:雷惊刘);coutpString2endl;delete pString2;/释放动态字符数组释放动态字符数组pString22022-8-535引用的概念引用的概念引用引用是一个变量的是一个变量的别名别名,是一个目标对象的替代,是一个目标对象的替代名,名,它由符号它由符号&来引导来引导。引用类似于一个人的外号引用类似于一个人的外号,当给某个人起了一个,当给某个人起了一

    39、个外号时,这个外号就是这个人的引用。因此,对外号时,这个外号就是这个人的引用。因此,对这个人的外号操作,就是对这个人的操作,这个人的外号操作,就是对这个人的操作,类似地,类似地,对一个变量的引用操作,就是对这个变对一个变量的引用操作,就是对这个变量操作。量操作。2022-8-536【例例2-8】引用实例测试。引用实例测试。void main()int One=3;int&OneRef=One;/*定义引用定义引用OneRef,同时对其进行初始化为变量同时对其进行初始化为变量One,此时此时OneRef就是就是One的外号,引用必须在定义时就进行初始化的外号,引用必须在定义时就进行初始化*/co

    40、utOne=OnetOneRef=OneRefendl;/输出变量输出变量One与引用与引用OneRef的值,都为的值,都为3One+;/变量变量One增一,因此其引用增一,因此其引用OneRef也增一,一个变量和其引也增一,一个变量和其引用就是同一个变量。用就是同一个变量。coutOne=OnetOneRef=OneRefendl;OneRef=34;/对引用对引用OneRef赋值,就是对其引用的变量赋值,就是对其引用的变量One赋值赋值coutOne=OnetOneRef=OneRefendl;2022-8-537【例例2-8】引用实例测试。引用实例测试。运行结果为:运行结果为:One=3

    41、 OneRef=3One=4 OneRef=4One=34 OneRef=342022-8-5382.3.1 2.3.1 函数与模块函数与模块 2.3.2 2.3.2 函数的声明函数的声明2.3.3 2.3.3 函数的定义函数的定义 2.3.4 2.3.4 函数的参数与返回值函数的参数与返回值2.3.5 2.3.5 函数调用函数调用 2022-8-539一个程序可以分成多个相互独立的程序段,这一个程序可以分成多个相互独立的程序段,这些程序段被称为函数些程序段被称为函数。函数是一个完成一定功能。函数是一个完成一定功能的独立执行代码。的独立执行代码。当所要执行的程序很大时,需要以一种比较容易管当所

    42、要执行的程序很大时,需要以一种比较容易管理的方式来组织源代码,通常是将程序划分为若干理的方式来组织源代码,通常是将程序划分为若干模块。模块。C+语言使用文件作为划分模块的主要机制,语言使用文件作为划分模块的主要机制,这些组成这些组成C+程序的文件称为程序的文件称为文件模块,文件模块,简称为简称为模模块块。2022-8-540VC有两种程序模块:有两种程序模块:函数函数(function)。其中函数也有两类:一类为类似于其中函数也有两类:一类为类似于C语言中的语言中的普普通函数通函数(类体外的函数),另一类为类中的(类体外的函数),另一类为类中的成员函数成员函数。其。其区别区别是前者是前者不属于

    43、某个类,而后者却属于某个类,即前者的作用域要大于后者不属于某个类,而后者却属于某个类,即前者的作用域要大于后者。类类(class)。包含成员变量和成员函数。包含成员变量和成员函数。函数的函数的作用作用有两个有两个:一是一是实现任务划分实现任务划分,将一个比较复杂的任务划分成若干个简单的任务,将一个比较复杂的任务划分成若干个简单的任务,每一个任务可以由一个或多个函数组成,函数的使用,便于任务的分每一个任务可以由一个或多个函数组成,函数的使用,便于任务的分工与处理,便于验证程序的正确性;工与处理,便于验证程序的正确性;二是二是实现软件的源代码复用实现软件的源代码复用,把一些功能相似的程序段组织成函

    44、数,把一些功能相似的程序段组织成函数,使得函数的代码只有一处,而调用却可以有多处,但却不需要编写雷使得函数的代码只有一处,而调用却可以有多处,但却不需要编写雷同的代码。同的代码。2022-8-541 函数和变量一样,在使用之前应该函数和变量一样,在使用之前应该先声明。先声明。VC中一种函数的引用性声明中一种函数的引用性声明函数原型,它的一般形式为:函数原型,它的一般形式为:(););2022-8-542在在VC中函数必须要有中函数必须要有原型原型,这是,这是VC区别于区别于C的的一个方面。函数原型的作用是告诉编译器有关一个方面。函数原型的作用是告诉编译器有关函数的信息:函数的信息:函数的名称、

    45、函数参数的类型、函数的名称、函数参数的类型、函数返回值的类型、函数参数的个数、函数参函数返回值的类型、函数参数的个数、函数参数的顺序数的顺序。VC编译器是根据函数原型来检查函编译器是根据函数原型来检查函数调用的正确性。数调用的正确性。我们在编写我们在编写C+程序时,都有大量的程序时,都有大量的#include “.h”的字样,这实质上是一条编译的字样,这实质上是一条编译预处理指令预处理指令。它把系统定义的函数或自定义的函数包含进来它把系统定义的函数或自定义的函数包含进来。切记它只是包含了函数的原型,真正的函数实现代切记它只是包含了函数的原型,真正的函数实现代码并没有包含进来。编译器根据这些函数

    46、的原型来码并没有包含进来。编译器根据这些函数的原型来检查用户调用是否正确。检查用户调用是否正确。2022-8-543下面为从下面为从math.h中抽取出的一段函数原型说明,中抽取出的一段函数原型说明,从函数的名字可以看出其功能。从函数的名字可以看出其功能。int _cdecl abs(int);double _cdecl acos(double);double _cdecl asin(double);double _cdecl atan(double);double _cdecl cos(double);double _cdecl exp(double);2022-8-544函数的定义包括函数

    47、的定义包括函数头函数头和和函数体函数体两部分。两部分。函数头定义函数的名称、参数函数返回值函数头定义函数的名称、参数函数返回值类型等,函数体则定义函数的算法实现。类型等,函数体则定义函数的算法实现。函数定义的一般形式是:函数定义的一般形式是:函数类型函数类型 函数名(数据类型函数名(数据类型1 1 形参形参1 1,数据类型,数据类型2 2 形参形参2 2)/函数体函数体 2022-8-545函数名是一个函数名是一个标识符标识符以字母、下划线或数字组以字母、下划线或数字组成并且必须以字母和下划线开头的字符序列,成并且必须以字母和下划线开头的字符序列,函数函数类型是指类型是指函数的返回值类型函数的

    48、返回值类型,可以是基本数据类型,可以是基本数据类型或复合数据类型。如果一个函数没有返回值,则可或复合数据类型。如果一个函数没有返回值,则可以将它的返回类型指定为以将它的返回类型指定为void。void也是也是C+提供提供的一种基本数据类型,表示的一种基本数据类型,表示“空值空值”,它不能作为它不能作为操作数参与任何运算操作数参与任何运算。函数名称后为形式参数表,。函数名称后为形式参数表,它是用逗号分隔的参数说明表列。它是用逗号分隔的参数说明表列。函数体是指用函数体是指用“”和和“”括住的语句序列,分为括住的语句序列,分为说明部分和语句部分说明部分和语句部分,在一个函数体中,这两个部分,在一个函

    49、数体中,这两个部分可以交替出现,但对某具体变量来说,应先声明后使可以交替出现,但对某具体变量来说,应先声明后使用。用。2022-8-546【例例2-9】定义一个】定义一个求两个数的较小数的求两个数的较小数的函数函数min()。int min(int x,int y)/函数定义部分函数定义部分return xy?x:y;2022-8-547函数的函数的参数参数和和返回值返回值是函数的两个重要方面。是函数的两个重要方面。函数的调用是程序模块之间的通讯,函数的调用是程序模块之间的通讯,函数在调用时函数在调用时将数据传递到被调用函数中将数据传递到被调用函数中。函数的返回值是函数。函数的返回值是函数之间

    50、传递信息的通道。之间传递信息的通道。1 1函数的实参与形参函数的实参与形参函数的参数分为函数的参数分为形式参数形式参数(简称形参)和简称形参)和实际参数实际参数(简称实参)。简称实参)。调用函数的参数称为调用函数的参数称为实参实参。被调用函数的参数称为被调用函数的参数称为形参形参。2022-8-5482 2函数返回值的实现函数返回值的实现 函数的类型就是函数返回值的类型函数的类型就是函数返回值的类型,当函,当函数没有返回值时,其函数的类型为数没有返回值时,其函数的类型为void,有返回有返回值的函数必须在其函数体中出现值的函数必须在其函数体中出现return语句,其语句,其格式为:格式为:re

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第2章:VC程序设计基础-变量与函数.ppt
    链接地址:https://www.163wenku.com/p-3407769.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库