第2章C面向过程的程序设计.ppt
《第2章C面向过程的程序设计.ppt》由会员分享,可在线阅读,更多相关《第2章C面向过程的程序设计.ppt(30页珍藏版)》请在三一办公上搜索。
1、1,第2章 C+面向过程的程序设计,2.1 数据类型 2.2 常量和变量 2.3 基本控制结构2.4 数组和指针 2.5 函数,2,2.1 数据类型,数据类型的作用有两个:一是指明为数据分配多大的存储空间和规定了数据的存储结构,进而规定了数据的取值范围;二是规定了数据所能进行的操作。,3,2.1 数据类型,4,2.1 数据类型,2.1.1 基本数据类型的取值范围,5,2.1 数据类型,2.1.2 C+的扩展 1.布尔类型(bool)布尔类型(bool)是ANSI C+新增的数据类型,其取值只能是true(1)和false(0)。主要用来建立复杂的条件判断和控制循环操作的标志。2.结构、联合和枚
2、举名可直接作为类型名 在C语言中定义结构体、联合或枚举类型的变量时,必须加上struct、union或enum关键字。在C+中,自定义的结构名、联合名和枚举名可以直接作为类型名使用,在定义变量时,在结构名、联合名或枚举名前可省略struct、union或enum关键字。3.无名联合 在C+中定义联合时,可以在union关键字后省略联合名,这样定义的联合称为无名联合。,6,2.1 数据类型,uniondouble d;int i;在此无名联合中,d和i共享相同的存储空间。无名联合中定义的数据项可以直接作为变量使用,例如:d=8.3;i=5;,7,2.1 数据类型,4.数据类型转换 表达式中的类型
3、转换分为自动类型转换和强制类型转换。C+的强制类型转换有两种格式。格式1:(数据类型)表达式 在使用这种格式时,如果表达式为包含多个操作数的表达式,则表达式应加括号。格式2:数据类型(表达式)这是C+扩充的一种强制类型转换方式。将数据类型名作为函数名,表达式作为参数,采用函数调用的形式。,8,2.2 常量和变量,2.2.1 常量 1.整型常量 2.实型常量 3.字符常量 4.字符串常量 5.布尔常量 布尔常量只有两个:false和true。6.符号常量 除了直接用值表示常量外,还可以用标识符来表示常量,称为符号常量。C+中可以使用const修饰符和#define宏定义命令定义符号常量。使用co
4、nst声明常量的格式为:const 数据类型 常量名=常量值;,9,2.2 常量和变量,在使用const定义符号常量时必须要进行初始化,在程序运行过程中不能改变其值。定义符号常量,可以像C语言中用#define宏定义命令定义。对于宏定义命令#define,编译器只做简单文本替换,只是对源程序编写上的一种简化,它不进行类型检查,在某些情况下易出错。使用const定义的符号常量具有类型,在使用时系统需要进行类型检查。【例2.1】符号常量的定义和使用示例 在C+中,用const定义的符号常量可以用来定义数组。const还可以修饰指针和函数的参数和返回值。在C+中一般使用const定义符号常量,不推荐
5、使用#define定义符号常量。,10,2.2 常量和变量,2.2.2 变量 1.变量的定义 2.存储类型 3.变量定义语句的位置 在C语言中,全局变量的定义必须在所有函数定义之前,局部变量的定义必须在复合语句的可执行语句之前。C+中变量定义语句的位置非常灵活,可以与可执行语句在程序中交替出现。在C+中甚至可以在for循环语句中定义变量,例如:for(int i=0;i10;i+),11,2.2 常量和变量,4.作用域运算符“:”C/C+中,在相同的作用域内,多个变量不能同名,但在不同的作用域内允许定义同名的变量。如果一个内层作用域中定义了与外层作用域中同名的变量,那么在该作用域模块中对这个变
6、量的访问只是对该内层作用域局部变量的访问。【例2.2】不同作用域同名变量的访问 C+语言中可以使用作用域运算符“:”在局部变量的作用域内访问同名的全局变量。【例2.3】作用域运算符的使用示例 注意,作用域运算符“:”只能用来访问全局变量,而不能用来访问同名的非全局变量。【例2.4】作用域运算符的错误用法,12,2.3 基本控制结构,C+的流程控制语句与C语言完全相同。2.3.1 顺序结构2.3.2 选择结构 1.if语句 2.switch语句 2.3.3 循环结构 1.while语句 2.do-while语句 3.for语句 2.3.4 流程的转移控制 1.goto语句 2.break语句 3
7、.continue语句,13,2.4 数组和指针,2.4.1 数组 1.数组的定义 C语言中,定义数组时,下标必须是常量,不允许使用表达式。C+中允许使用常量表达式来定义数组。2.数组的初始化 3.数组元素的引用 2.4.2 指针 1.指针的定义 需要特别注意的是,指针定义后其指向是不确定的,在让其指向具体的变量前就向指针所指向的内存空间写数据,可能造成不可预料的后果。因此,在使用一个指针变量前,必须要初始化指针变量,让其指向具体的变量。,14,2.4 数组和指针,2.指针的运算 2.4.3 指针与数组2.4.4 动态内存分配 C语言中使用库函数malloc()和free()来实现动态内存的分
8、配和释放(头文件为stdlib.h和malloc.h),C+仍然支持这种方式。另外,C+提供了运算符new和delete来进行动态内存的分配和释放。使用new和delete来代替库函数malloc()和free()有以下优势:new和delete是运算符,使用时不需要包含头文件;在对指针赋值时不需要进行类型转换,系统自动返回正确的类型;使用new给对象分配内存空间会自动调用该对象的构造函数,使用delete释放对象会自动调用该对象的析构函数。,15,2.4 数组和指针,1.new运算符 new运算符用于向系统申请内存空间,并返回该内存空间的首地址。其使用格式如下:指针=new 数据类型;指针的
9、类型必须与new后的数据类型相同,否则应进行强制类型转换。在分配内存空间时,可以对分配的内存空间进行初始化,格式如下:指针=new 数据类型(表达式);例ch02_14.cpp new运算符可以为数组申请内存空间,建立动态数组。为一维数组申请存储空间的格式为:指针=new 数据类型整型表达式;为二维数组申请内存空间的格式为:,16,2.4 数组和指针,指针=new 数据类型表达式常量表达式;其中,第一维的大小可以是任意合法的表达式,第二维的大小必须是常量表达式。例如:int n=5;int(*p)4=new intn4;使用new可以建立任意维数的动态数组,格式如下:指针=new 数据类型表达
10、式常量表达式1常量表达式2;使用new动态分配内存时,如果系统没有足够存储空间满足申请要求或由于其它原因造成分配内存失败,new将返回空指针(NULL)。因此通常应对内存的动态分配是否成功进行检查。2.delete运算符,17,2.4 数组和指针,使用new动态分配的存储空间使用结束后一定要释放,否则会造成内存泄漏。运算符delete用于释放使用new动态分配的存储空间。它的使用格式一般为:delete 指针;其中,指针必须是new分配的存储空间的首地址。释放动态分配的数组存储空间时,应使用如下格式:delete 指针;其中,指针必须是动态数组的首地址。例ch02_15.cpp 直接使用del
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 过程 程序设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5898298.html