《C++程序设计》课件第2章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《C++程序设计》课件第2章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计 C+ 程序设计 课件
- 资源描述:
-
1、C+程序设计第第2 2章章 C+C+基础知识基础知识第第2章章 C+基础知识基础知识 本章学习要点本章学习要点从C程序到C+程序的发展历程简单的C+程序C+的输入输出、数据类型、函数及指针C+的常变量、引用、名字空间、字符串变量C+程序的编写和实现第第2章章 C+基础知识基础知识本章学习目标本章学习目标了解从C程序到C+程序的发展历程对简单的C+程序有整体的感性认识掌握C+对C的扩充掌握C+的输入输出、数据类型、函数及指针掌握C+的常变量、引用、名字空间、字符串变量熟悉C+程序的编写和实现流程2.1 从C到C+C+3.0C+2.0C+1.0带类的带类的CCC+4.0ANSI C+89年,增加类
2、的多继承91年,增加模板增加异常处理、名字空间、运行时类型识别97年,成为标准2.2 简单C+程序v通过简单的通过简单的C+例子认识例子认识C+程序程序 【例2-1】在屏幕上输出一行字符“Hello C+!”。/=#include/包含头文件命令using namespace std;/使用名字空间stdint main()coutHello C+!endl;/输出字符串到屏幕return 0;/main函数返回0至操作系统/=注意:标准C+程序和C程序的不同:main函数的返回值为整型 使用cout输出及需要用到的头文件iostream 名字空间2.2 简单C+程序C+的函数和C语言的函数非
3、常相似 函数的使用仍然需要先声明后使用。如果函数定义在函数调用之后,则必须在前面声明函数原型【例2-2】通过函数求两个整数a和b的和。/=#include/包含头文件命令using namespace std;/使用名字空间stdint sum(int x,int y)return x+y;/求和的函数int main()int a,b;/定义两个变量a和bcoutInput to a and b:ab;/等待用户从键盘输入数据couta+b=sum(a,b)endl;/输出结果信息至屏幕return 0;/main函数返回0至操作系统/=2.2 简单C+程序【例2-3】声明一个关于人的类Pe
4、rson,人的信息包括姓名、性别、年龄,人可以输入自己的信息,也可以显示自己的信息。#include/包含头文件命令using namespace std;/使用名字空间stdclass Person/类的声明public:/以下为类的公用成员函数void SetInfo()/公用成员函数SetInfo coutnamesexage;/输入数据至私有数据成员void Show()/公用成员函数Show cout name:name;/输出私有成员name的值cout sex:sex;/输出私有成员sex的值cout age:age、运算符运算符2.3.2 数据类型的扩展基本基本类型类型空类型空
5、类型指针指针类型类型构造构造类型类型C+数据类型整型、字符型整型、字符型浮点型浮点型布尔型布尔型枚举、数组枚举、数组结构体、共用体结构体、共用体类类2.3.3 用const定义常变量v直接常量和符号常量直接常量和符号常量v符号常量的缺点符号常量的缺点 运行时不分配内存单元运行时不分配内存单元 符号常量没有类型,在编译时不进行类型检查符号常量没有类型,在编译时不进行类型检查 替换后的表达式和预想的表达式是否一致替换后的表达式和预想的表达式是否一致v为了使常量也能像变量那样进行类型检查,为了使常量也能像变量那样进行类型检查,C+提供了用提供了用const定义常变量的方法定义常变量的方法v定义常变量
6、的语法:定义常变量的语法:const 类型类型 变量名变量名;2.3.3 用const定义常变量【例2-4】利用常变量计算圆的面积。/=#include using namespace std;int main()const float PI=3.14;/定义常变量float radius=0;coutradius;coutThe area of circle is:PI*radius*radiusendl;return 0;/=注意注意const的位置,一般见到的的位置,一般见到的const的位置可能在类型的前面,但是的位置可能在类型的前面,但是const也可以在变量名前面,并且两者的含义完
7、全相同。也可以在变量名前面,并且两者的含义完全相同。2.3.4 指针v指针的概念指针的概念 指针是一个重要概念,如果使用得当可以使程指针是一个重要概念,如果使用得当可以使程序高效、简洁、紧凑。如果对指针掌握不牢固,序高效、简洁、紧凑。如果对指针掌握不牢固,编程则会出现意想不到的错误编程则会出现意想不到的错误 指针是内存单元的地址指针是内存单元的地址 经常所讲的指针是指针变量的简称,是用来存经常所讲的指针是指针变量的简称,是用来存放指针(地址)的变量。放指针(地址)的变量。v本节重点讨论本节重点讨论C+中使用指针需要注中使用指针需要注意的地方意的地方 2.3.4.1 指针与0v空指针空指针 空指
8、针表示空指针表示“未分配未分配”或者或者“尚未指向尚未指向任何地方任何地方”的指针的指针 空指针一般用来判断内存分配是否成功空指针一般用来判断内存分配是否成功 注意:注意:“空指针空指针”与与“野指针野指针”的区别的区别 在指针上下文中的常数在指针上下文中的常数0被编译成空指针被编译成空指针 程序员更常使用符号常量程序员更常使用符号常量NULL来表示空来表示空指针指针 2.3.4.1 指针与0【例2-5】指针和0/=#include using namespace std;int main()int*p=0;/定义空指针pint*q;/定义野指针qint x=100;/定义整型变量x并初始化为
9、100/*p=50;/若执行则编译出错,不能使用空指针*q=50;/编译通过,但不知把50写到何处p=q=&x;/使指针p和q都指向变量xif(p!=0)/判断指针p是否为空指针cout*p *qendl;/输出变量x的值/=注意注意编程时养成定义指针时初始化为空指针,使用指针时判断是否为空指针的好习惯,可以减少程序中指针的许多错误。2.3.4.2 指针与const【例2-6】指向const变量的指针。/=#include using namespace std;int main()const int*p=NULL;/定义指向const变量的指针pconst int a=10;/定义常变量ap
10、=&a;/指针p指向acout*p=*pendl;/输出p所指向单元的内容int b=100;/定义普通变量bp=&b;/指针p指向bcout*p=*pendl;/输出p所指向单元的内容/*p=200;/错误,不能通过p修改p所指向单元内容b=200;cout*p=*pendl;/输出p所指向单元的内容return 0;/=通过本例可以看到可以改变指向const变量的指针的指向,但是不能通过指针修改指针指向单元内容2.3.4.2 指针与const通过本例可以看到可以改变const指针指向单元的内容,但是不能改变const指针的指向。【例2-7】const指针。/=#include using
11、namespace std;int main()int a=10;/定义普通变量aint b=100;/定义普通变量bint*const p=&a;/定义const指针p并初始化指向acout*p=*pendl;/输出p所指向单元内容/p=&b;/错误,不能改变const指针p的指向*p=100;/通过指针修改p所指向单元内容cout*p=*pendl;/输出p所指向单元内容return 0;/=2.3.4.2 指针与const对于指向const变量的const指针,既不能改变指针指向单元的内容,也不能改变指针的指向。【例2-8】指向const变量的const指针。/=#include usi
12、ng namespace std;int main()int a=10;int b=100;const int*const p=&a;/定义指向const变量的const指针pcout*p=*pendl;/输出p所指向单元内容/p=&b;/错误,不能改变指针p的指向/*p=100;/错误,不能改变p所指向单元的内容return 0;/=2.3.4.2 指针与constv小结小结指针和指针和const的关系比较复杂,的关系比较复杂,const有两个位置,可形成三种指针:有两个位置,可形成三种指针:1.只在只在“*”之前有之前有const的指针,称为指的指针,称为指向向const变量的指针;变量的
13、指针;2.只在只在“*”之后有之后有const的指针,称为的指针,称为const指针;指针;3.“*”前后都有前后都有const的指针,称为指向的指针,称为指向const变量的变量的const指针。指针。2.3.4.3 void指针vvoid在作为函数类型和参数类型时为在作为函数类型和参数类型时为空类型,表示没有返回值或参数。空类型,表示没有返回值或参数。vvoid修饰指针时称为修饰指针时称为“无类型指针无类型指针”,表示该指针可以指向任意类型的变量。表示该指针可以指向任意类型的变量。v虽然虽然void指针可以指向任意类型的数指针可以指向任意类型的数据,但是在使用据,但是在使用void指针时必
14、须对其指针时必须对其进行强制类型转换成它所指向单元的进行强制类型转换成它所指向单元的实际类型,然后才可以使用实际类型,然后才可以使用 2.3.4.3 void指针【例2-9】void指针的声明与使用。/=#include using namespace std;int main()int x=100;void*p=&x;/定义void指针p指向x int*q=NULL;/定义整型指针q /cout*p=*pendl;/错误,非法使用指针p cout*p=*(int*)pendl;/正确,输出p指向单元内容 /q=p;/错误,非法,void指针赋给整型指针 q=(int*)p;/正确,合法,vo
15、id指针赋给整型指针 cout*q=*qendl;/输出指针q指向单元内容 return 0;/=2.3.4.3 void指针v为什么要使用为什么要使用void指针指针 因为因为void指针可以指向任意类型的数据,指针可以指向任意类型的数据,所以使用所以使用void指针时把指针时把void指针所指向指针所指向的数据给抽象化了,这样可以增加程序的数据给抽象化了,这样可以增加程序的通用性的通用性 v使用使用void指针的两个例子指针的两个例子void*memcpy(void*dest,const void*src,size_t len);void*malloc(unsigned int size)
16、;2.3.4.4 new和deletevC语言的动态内存管理语言的动态内存管理 malloc()和和free()函数函数 主要缺点主要缺点函数的返回值是函数的返回值是voidvoid*类型类型 分配内存单元时根据参数分配内存单元时根据参数sizesize的值来分配,的值来分配,无法检查错误无法检查错误分配到的内存单元无法初始化分配到的内存单元无法初始化vC+中使用中使用new和和delete运算进行动运算进行动态内存管理态内存管理2.3.4.4 new和delete【例2-11】使用new和delete动态管理内存单元。/=#include using namespace std;int ma
17、in()int*p=NULL;/定义整型指针p p=new int;/用new申请可以存放一个整型数据的内存单元 cout*p=*pendl;/输出指针p指向单元的内容 delete p;/delete释放指针p指向内存单元 return 0;/=2.3.4.4 new和deletev申请内存空间并进行初始化申请内存空间并进行初始化 指针变量指针变量=new 数据类型数据类型(初值初值);v分配多个连续变量的存储空间分配多个连续变量的存储空间 使用使用new 和和delete 指针变量指针变量 =new=new 数据类型数据类型 元素个数元素个数;delete delete 指针变量指针变量;
18、:兼容兼容C语言的语言的malloc/free方式方式,单个变量的单个变量的new/delete方式方式,多个变量的多个变量的new/delete 方式方式 2.3.5 引用v引用就是某一变量的别名,对引用的引用就是某一变量的别名,对引用的操作与对变量直接操作完全一样操作与对变量直接操作完全一样 v引用的声明方法引用的声明方法 类型标识符类型标识符&引用名引用名=目标变量名目标变量名;“&”运算符在变量的前面表示取地址运算,在赋值运算任的左侧是引用运算符,这种在不同的上下文环境中具有不同含义的现象,称之为运算符功能重载。2.3.5 引用【例2-12】使用引用访问变量。/=#include us
19、ing namespace std;int main()int x=100;/定义整型变量x int&rx=x;/定义变量x的引用rx coutrx=rxendl;/输出引用rx的内容 rx=200;/给引用rx赋值 coutx=xendl;/输出变量x的内容 return 0;/=程序执行后运行的结果如下:rx=100 x=2002.3.5 引用【例2-13】编写一个函数,交换两个整型变量的值。/=#include using namespace std;void swap(int&x,int&y)/定义swap函数用来交换两个变量int tmp;tmp=x;x=y;y=tmp;int ma
展开阅读全文