第2章面向过程程序设计概述.ppt
《第2章面向过程程序设计概述.ppt》由会员分享,可在线阅读,更多相关《第2章面向过程程序设计概述.ppt(137页珍藏版)》请在三一文库上搜索。
1、1,C+面向对象程序设计,第2章 面向过程程序设计概述,2,第2章 面向过程程序设计概述,本章学习要点,从C语言到C+的发展历程 简单的C+程序 C+在面向过程程序设计方面对C语言的扩充 C+的输入输出、数据类型、常变量及指针 C+的引用、函数、名字空间、字符串变量、复数变量 C+程序的编写和实现,3,本章学习目标,了解从C语言到C+的发展历程 对简单的C+程序有整体的感性认识 掌握C+在面向过程程序设计方面对C的扩充 掌握C+的输入输出、数据类型、常变量及指针 掌握C+的引用、函数、名字空间、字符串变量、复数变量 熟悉C+程序的编写和实现流程,第2章 面向过程程序设计概述,4,2.1 从C语
2、言到C+,C语言到C+的发展历程,C+3.0,C+1.0,带类的C,89年,增加类的多继承,91年,增加模板,增加异常处理、名字空间、运行时类型识别,97年, 美国C+标准正式发布,5,下面看几个简单的C+程序,【例2-1】在屏幕上输出一行字符“Welcome to C+!”。 #include /包含头文件命令 using namespace std; /使用名字空间std int main() cout“Welcome to C+!“endl; /输出字符串到屏幕 return 0; /main函数返回0至操作系统 ,2.2 简单C+程序,6,【例2-2】通过函数求两个整数a和b中的较大者
3、。 #include /包含头文件命令 using namespace std; /使用名字空间std int Max(int x, int y) return xy?x:y; /求两数中的大者函数Max int main() int a,b; /定义两个整型变量a和b coutab; /等待用户从键盘输入数据 cout“The bigger is “Max(a, b)endl; return 0; ,2.2 简单C+程序,7,#include /包含头文件命令 using namespace std; /使用名字空间std int main() int a,b; /定义两个整型变量a和b c
4、outab; /等待用户从键盘输入数据 int Max(int x, int y); /Max函数原型声明 cout y?x:y; ,2.2 简单C+程序,变量可以在程序的任何地方定义,但要在使用前,8,2.2 简单C+程序,【例2-3】声明一个关于人的类Person,人的信息包括姓名、性别、年龄,程序运行后,人可以输入自己的信息,也可以显示自己的信息。,#include /包含头文件命令 using namespace std; /使用名字空间std class Person int main() ; return 0; ,9,2.2 简单C+程序,class Person /类的声明 pu
5、blic: /以下为类的公用成员函数 void SetInfo() /公用成员函数SetInfo coutnamesexage; void Show() /公用成员函数Show cout “name : “name; cout “sex: “sex; cout “age: “ageendl; private: /以下为类的私有数据成员 char name20; /私有数据成员name char sex2; /私有数据成员sex int age; /私有数据成员age ; /类声明结束,此处必须有分号,10,2.2 简单C+程序,int main() /main函数 Person person1
6、,person2; /定义Person类的两个对象person1,person2 person1.SetInfo(); /对象person1信息输入 person2.SetInfo(); /对象person2信息输入 person1.Show(); /对象person1信息输出 person2.Show(); /对象person2信息输出 return 0; ,11,注意: 类的声明和对象的定义的语法形式。 类中的成员分为数据成员和成员函数,成员的可见性分为 3种:公用 、私有、受保护。 类的概念的理解:类是一种用户自定义数据类型,它是不占用实际存储空间的。 对象的理解:对象是类类型的变量,系
7、统会为对象分配内存空间。,2.2 简单C+程序,12,2.3 C+对C语言的扩充,在输入输出方面的扩充 对数据类型的扩充 常变量 在指针方面的扩充 引用的概念 在函数方面的扩充 名字空间的概念 字符串变量 复数变量,本章重点,13,2.3.1 C+的输入输出,C语言输入输出的实现 通过输入输出库函数实现 C语言的输入输出存在着格式复杂、无法保证安全性、无法对自定义类型整体输入输出等缺点 C+对C输入输出的扩充 C+的输入/输出(I/O)流类库 “流”的思想 cout、cin对象, 运算符,14,2.3.2 数据类型的扩展,新增数据类型,功能进行了扩充,15,C+对C语言的结构体、共用体、枚举等
8、自定义数据类型做了扩充。,2.3.2 数据类型的扩展,16,struct Student int num; char name20; char sex; void display() cout“num=“numendl; cout“name=“nameendl; cout“sex=“sexendl; ;,2.3.2 数据类型的扩展,17,struct Student private: int num; char name20; char sex; public: void display() cout“num=“numendl; cout“name=“nameendl; cout“sex=“s
9、exendl; ;,Student stud1,stud2;,2.3.2 数据类型的扩展,18,在C+中用结构体类型名、共用体类型名、枚举类型名定义变量时,不必在类型名前加上前缀struct、union、enum。,2.3.2 数据类型的扩展,19,struct student char ID15; char name20; int age; ;,union xy int x; char y; ; enum color black,white,red,student stud; xy x1; color col;,struct student stud; unoin xy x1; enum c
10、olor col;,C语言,C+,2.3.2 数据类型的扩展,20,2.3.3 用const定义常变量,直接常量和符号常量 使用符号常量需要注意的问题: 运行时不分配内存单元 符号常量没有类型,在编译时不进行类型检查 注意替换后的表达式和预想的表达式是否一致,int x=1,y=2; #define PI 3.14159 #define R x+y coutPI*R*Rendl;,输出语句输出的并不是 3.14159*(x+y)*(x+y), 而是 3.14159*x+y*x+y。,21,2.3.3 用const定义常变量,为了使常量也能像变量那样进行类型检查,C+提供了用const定义常变量
11、的方法 定义常变量的语法: const float PI=3.14159;,注意:常变量要在定义的同时进行初始化, 可以是具体的数值,也可以是表达式。,22,【例2-4】利用常变量计算圆的面积。 #include using namespace std; int main() const float PI = 3.14; /定义常变量 float radius = 0; coutradius; cout“The area of circle is: “PI*radius*radiusendl; return 0; ,2.2 简单C+程序,float const PI = 3.14; /定义常变
12、量,23,2.3.4 指针,指针 指针是一个重要概念,如果使用得当可以使程序高效、简洁、紧凑。如果对指针掌握不牢固,编程则会出现意想不到的错误 指针是内存单元的地址 经常所讲的指针是指针变量的简称,是用来存放指针(地址)的变量。 本节重点讨论C+中使用指针需要注意的地方,24,2.3.4.1 指针与0,空指针 空指针表示“未分配”或者“尚未指向任何地方”的指针 空指针一般用来判断内存分配是否成功 注意:“空指针”与“野指针”的区别 在指针上下文中的常数0被编译成空指针 程序员更常使用符号常量NULL来表示空指针,未初始化的指针,25,【例2-5】指针与0。 #include using nam
13、espace std; int main() int x = 100; /定义整型变量x并初始化为100 int *p = 0; /定义空指针p /*p = 50; /此语句编译出错,不能使用空指针 p = ,2.2 简单C+程序,int *p = NULL,26,2.3.4.2 指针与const,int *p = NULL,const int *p = NULL,int const *p = NULL,指向const变量的指针,int * const p = NULL,27,2.3.4.2 指针与const,【例2-6】指向const变量的指针。 include using namespac
14、e std; int main() const int *p = NULL; /定义指向const变量的指针p const int a = 10 ; /定义常变量a p = ,通过本例可以看到可以改变指向const变量的指针的指向,但是不能通过指针修改指针指向单元的内容。,28,2.3.4.2 指针与const,【例2-7】const指针。 #include using namespace std; int main() int a = 10 ; /定义普通变量a int b = 100; /定义普通变量b int * const p = ,通过本例可以看到可以改变const指针指向单元的内容
15、,但是不能改变const指针的指向。,29,2.3.4.2 指针与const,【例2-8】指向const变量的const指针。 #include using namespace std; int main() int a = 10 ; int b = 100; const int * const p = ,对于指向const变量的const指针,既不能改变指针指向单元的内容,也不能改变指针的指向。,30,2.3.4.2 指针与const,小结指针和const的关系比较复杂,const有两个位置,可形成三种指针:,const int *p = NULL,int const *p = NULL,指
16、向const变量的指针,int * const p = NULL,31,2.3.4.2 指针与const,小结指针和const的关系比较复杂,const有两个位置,可形成三种指针:,const int * const p = NULL,int const * const p = NULL,指向const变量的const指针:,32,2.3.4.3 void指针,void在作为函数类型和参数类型时为空类型,表示没有返回值或参数。 void修饰指针时称为“无类型指针”,表示该指针可以指向任意类型的变量。 虽然void指针可以指向任意类型的数据,但是在使用void指针时必须对其进行强制类型转换,转换
17、成它所指向单元的实际类型,然后才可以使用。,33,2.3.4.3 void指针,【例2-9】void指针的定义与使用。 #include using namespace std; int main() int x = 100; void *p = ,34,2.3.4.3 void指针,为什么要使用void指针 因为void指针可以指向任意类型的数据,所以使用void指针时把void指针所指向的数据给抽象化了,这样可以增加程序的通用性 使用void指针的两个例子,void * memcpy(void *dest, const void *src, size_t len);,void * mall
18、oc(unsigned int size);,35,2.3.4.4 new和delete,C语言的动态内存管理 malloc()和free()函数 主要缺点 函数的返回值是void*类型 分配内存单元时根据参数size的值来分配,无法检查错误 分配到的内存单元无法初始化 C+中使用new和delete运算符进行动态内存管理,P31 最后,36,【例2-11】使用new和delete动态管理内存单元。 #include using namespace std; int main() int *p = NULL; p = new int; cout“*p = “*pendl; delete p;
19、p=NULL; return 0; ,2.3.4.4 new和delete,37,申请内存空间并进行初始化 指针变量 = new 数据类型(初值); 分配多个连续变量的存储空间 使用new 和delete 指针变量 = new 数据类型元素个数; delete 指针变量;,三种动态内存管理的方式:兼容C语言的malloc/free方式,单个变量的new/delete方式,多个变量的new /delete 方式,2.3.4.4 new和delete,38,2.3.5 引用,引用就是某一变量的别名,对引用的操作与对变量直接操作完全一样 引用的声明方式 类型标识符 ,39,2.3.5 引用,int
20、a; int ,在声明一个引用时,引用前面的类型标示符是指目标变量的类型,且必须同时使之初始化,即声明它代表哪一个变量.,40,【例2-12】使用引用访问变量。 #include using namespace std; int main() int x = 100; /定义整型变量x int ,程序运行结果如下: rx = 100 x = 200,2.3.5 引用,41,补充:关于引用的简单说明,(1)引用并不是一种独立的数据类型,声明引用时必须指定其代表某一类型的实体(如变量、类对象),即对它初始化。,int a; int ,42,(2)引用与其所代表的变量共享同一内存单元,系统并不为引用
21、另外分配存储空间。,int a=3; int ,补充:关于引用的简单说明,43,int a=3; int /声明c是整型引用b的别名,(3)对引用的初始化,可以用一个变量名,也可以用另一个引用。如:,补充:关于引用的简单说明,44,(4)引用在初始化后不能再被重新声明为另一变量的别名。,int a=3,b=4; int /企图重新声明c为整型变量b的别名,补充:关于引用的简单说明,45,(5)当&a的前面有类型符时(如 int &a),它必然是对引用的声明;如果前面没有类型符时(p= &a) ,此时的&是取地址运算符。,int a=3,b=4; int ,补充:关于引用的简单说明,46,实际上
22、,在C+程序中很少使用独立变量的引用,如果要使用某一个变量,就直接使用它的原名,没有必要故意使用它的别名。前面举的例子只是为了说明引用的特征和基本的用法。 C+之所以增加“引用”,主要是利用它作为函数参数,以扩充函数传递数据的功能,补充:关于引用的简单说明,47,在C语言中,函数的参数传递有以下两种情况:,(1)值传递:,将变量名作为形参和实参。,此时传递给形参的是实参变量的值, 数据传递是单向的,在函数执行期间 形参值发生变化并不回传给实参。,(2)地址传递:,48,(2)地址传递:,形参是指针变量,实参是变量的地址。 函数调用时,形参指向实参变量单元, 数据传递是双向的。,49,【例2-1
23、3】编写一个函数,交换两个整型变量的值。,(1)值传递:,教材39,50,(2)地址传递:传递变量的地址(指针),【例2-13】编写一个函数,交换两个整型变量的值。,51,(3)引用传递:,【例2-13】编写一个函数,交换两个整型变量的值。,52,#include using namespace std; void Change(int ,2.3.5 引用,53,对引用的进一步说明,(1)不能建立数组的引用。 “引用”只能是变量或对象的引用。数组是具有某种类型的数据的集合,其名字表示该数组的起始地址而不是一个变量。所以不能建立数组的引用。 char c6=“hello”; char ,54,(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 过程 程序设计 概述
链接地址:https://www.31doc.com/p-3425244.html