(精品)2章_从C快速过渡到C++ (2).ppt
《(精品)2章_从C快速过渡到C++ (2).ppt》由会员分享,可在线阅读,更多相关《(精品)2章_从C快速过渡到C++ (2).ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章从从C快速过渡到快速过渡到C+2.1数据类型数据类型2.2C+的常量和变量的常量和变量2.3C+的指针的指针2.4引用变量引用变量(reference)2.5C+的运算符的运算符2.6C+的函数的函数小结小结2.1数据类型数据类型一、基本数据类型一、基本数据类型表表2-1C+的基本数据类型的基本数据类型4448二、复杂数据类型二、复杂数据类型C+中中采采用用”*”、”&”、”、”()”等等运运算算符符派派生生复复杂杂的数据类型:的数据类型:1数组数组常用格式为:常用格式为:数组名数组名下标下标,例如:,例如:chars=”abc”;s0=A;2指针指针常用格式为:常用格式为:*指针
2、名指针名例如:例如:int*pi,(*pfun)(char*,intlength);3枚举类型枚举类型:enumcolorred,yellow,green;4.引用引用(reference):intval=5,&refv=val;5class类型(包括类型(包括struct和和union类型)类型)6常量常量(constants):C+保留保留C的常量,并加以扩展的常量,并加以扩展constinttabsize=8;2.2C+的常量和变量的常量和变量一、常量一、常量整型常量、实型常量、字符常量、字符串常量、符号常量整型常量、实型常量、字符常量、字符串常量、符号常量布尔常量布尔常量(bool)有
3、两个值:有两个值:true和和false;将将C中中#define定定义义的的符符号号常常量量扩扩展展,即即指指针针变变量量、引引用用变变量量、结构变量、数组、结构变量、数组、class类型的对象都可定义为符号常量。类型的对象都可定义为符号常量。定义方法:使用定义方法:使用类型说明符类型说明符const修饰修饰一个与常量相关的标识一个与常量相关的标识符来替代常量符来替代常量;例例1:用用PI表示表示3.1415926,constfloatPI=3.1415926;floatconstPI=3.1415926;例例2:constchar*pc=”accd”;pc2=b;例例3:constintD
4、ata=1,2,3,4;/错错一、常量(续)一、常量(续)符号常量符号常量定义的符号常量定义的符号常量必须初始化必须初始化;由由const定义定义的符号常量可看作是的符号常量可看作是只读变量只读变量,值不可以改变值不可以改变;例例2-1 改错改错#includeusingnamespacestd;constdoublepi=3.1416;constdoubler;voidmain()doubleperi,area;peri=2*pi*r;pi=3.14;area=pi*r*r;coutperi,areaendl;const double r=3.2;错误错误错误,不能修改错误,不能修改pi的值
5、的值#include二、变量二、变量变量先定义后使用;变量先定义后使用;初始值初始值变量定义变量定义时可赋时可赋初始值初始值;同一程序块内同一程序块内不可以不可以定义定义同名变量同名变量;未被初始化未被初始化的变量值或者是默认值,或者是无效值,的变量值或者是默认值,或者是无效值,由变量类型由变量类型决定决定;C+增加三点:增加三点:(1)基本数据类型变量初始化操作的函数表示法)基本数据类型变量初始化操作的函数表示法v数据类型数据类型标识符标识符1=初始值初始值1,标识符标识符n=初始值初始值n;v数据类型数据类型标识符标识符1(初始值初始值1),标识符标识符n(初始值初始值n);v声明格式:声
6、明格式:例:例:inta(8),b;b=a*7;floatc(2.5);(2)可在程序)可在程序中中随时定义随时定义变量,只要在被变量,只要在被使用前使用前定义即可;定义即可;(3)作用域作用域运算符运算符:例例2-2作用域运算符作用域运算符:例例2-2:用作用域运算符访问被隐藏的全局变量。:用作用域运算符访问被隐藏的全局变量。#includeusingnamespacestd;intx;voidmain()autointx(1);:x=6;cout(1)x=xendl;cout(2)x=:xendl;结果:结果:(1)x=1(2)x=62.3C+的指针的指针C+的指针分为常量指针和指针变量。
7、的指针分为常量指针和指针变量。常量指针:变量的地址、数组名、结构数组名、对象数常量指针:变量的地址、数组名、结构数组名、对象数组名、函数名及用组名、函数名及用*const说明的指针名说明的指针名例:例:char*constp=“hello”;指针变量与指针变量与C语言一样必须先赋值才能参加运算和操作语言一样必须先赋值才能参加运算和操作例:例:float*px,*py;*px=12.43;*py=13.27;改:改:float x,y,*px=&x,*py=&y;*px=12.43;*py=13.27;可以定义可以定义void类型的指针类型的指针2.4引用变量引用变量(reference)引用是
8、一种特殊类型的变量,不同于普通变量,也不同引用是一种特殊类型的变量,不同于普通变量,也不同于指针变量,是标识对象的一种机制;于指针变量,是标识对象的一种机制;引用是对象引用是对象存储地址的抽象存储地址的抽象,用来为存储器提供别名;,用来为存储器提供别名;引用有类型;引用有类型;相当于变量的别名;相当于变量的别名;1、定义格式、定义格式&();或或&=;2、初始化与赋值、初始化与赋值定义引用时必须初始化;定义引用时必须初始化;可以将一个引用可以将一个引用赋给某个变量;赋给某个变量;引用可引用可被赋值被赋值;2.4引用(续引用(续1)例:例:inta=3;int&m=a;intn=m;int*p=
9、&m;m=m+5;3a8pm3n定义引用并初始化定义引用并初始化将引用赋值给变量将引用赋值给变量a=8,对引用的操作就是对被引用者的操作,对引用的操作就是对被引用者的操作3、引用的功能、引用的功能 用做函数的参数或函数的返回值;但函数用做函数的参数或函数的返回值;但函数不能返回对不能返回对局部对象的引用局部对象的引用;例:例:int&f(intindex,inta)intr=aindex;returnr;错,错,r是局部对象是局部对象正确:正确:int&r=aindex;2.4引用(续引用(续2)4、指针与引用的区别、指针与引用的区别指针通过地址指针通过地址间接访问间接访问某个变量,引用通过别
10、名某个变量,引用通过别名直接访直接访问问某个变量;某个变量;引用引用必须初始化必须初始化,一旦被初始化后不得再作为其他变量,一旦被初始化后不得再作为其他变量的别名;的别名;5、对引用变量的限制、对引用变量的限制不能对引用变量取地址不能对引用变量取地址:&a(&a(二级引用无意义二级引用无意义),*p(),*p(二级指针有二级指针有意义意义);不能建立引用数组不能建立引用数组:int a4;int&ra4=a;(int a4;int&ra4=a;(错错)不能对不能对voidvoid类型进行引用类型进行引用:void&rb();(:void&rb();(错错)不能用类型初始化引用不能用类型初始化引
11、用:int&rc=int;(:int&rc=int;(错错)无空引用无空引用:int&rd=NULL;(:int&rd=NULL;(无意义无意义),int*pi=NULL;(),int*pi=NULL;(有意义有意义)2.4引用(续引用(续3)例例2.3:分析下列程序的输出结果。:分析下列程序的输出结果。#includeusingnamespacestd;voidmain()intval(5);int&refv=val;refv=refv+5;coutvalendl;int*p=&refv,val1(refv);cout*ptval1endl;输输出出1010102.4引用(续引用(续4)例例
12、2.4:分析下列程序的输出结果。:分析下列程序的输出结果。#include using namespace std;int&f(int index,int a)/返回引用返回引用 int&r=aindex;return r;void main()int a=1,3,5,7,9;f(2,a)=55;for(int i=0;i5;i+)coutait;传址调用传址调用(C+中数组自动转换为中数组自动转换为指针指针);引用可作左值;引用可作左值;输出:13557a091357a2r55 int b=f(3,a);cout b=bendl;2.5C+的运算符的运算符一、表达式中的类型转换一、表达式中的
13、类型转换1.隐式类型转换隐式类型转换表达式中不同数据类型参加运算时表达式中不同数据类型参加运算时,赋值表达式中赋值表达式中向左看齐向左看齐调用函数时调用函数时return后表达式向函数返回值类型看后表达式向函数返回值类型看齐齐2.强制类型转换强制类型转换(显式类型转换显式类型转换)(类型名)表达式类型名)表达式基本数据类型名(表达式)基本数据类型名(表达式)doublef=6.86;inth=int(f);例例2-5一、表达式中的类型转换一、表达式中的类型转换(续)续)例例2.5隐式类型转换例程。隐式类型转换例程。#includeusingnamespacestd;intadd(doublex
14、,doubley)cout(2)x+y=x+yendl;returnx+y;voidmain()inta;doubleb(3.56),c(4.6);a=b;cout(1)a=a,b=bendl;cout(3)add()=add(b,c)从左到右从左到右23+-&*!+-sizeofnewdelete(类型)(类型)从右到左从右到左456.*-*/%+-从左到右从左到右789=!=10&1112|1314&|15?:从右到左从右到左16=+=-=*=/=%=&=|=17,从左到右从左到右三、三、newnew和和deletedelete运算符运算符 new new用于动态分配存储空间用于动态分配存
15、储空间 deletedelete配对使用,释放由配对使用,释放由newnew所开辟的内存空间。所开辟的内存空间。(1)(1)一般格式一般格式 new new (初值表)或(初值表)或 new new (2)(2)采用动态赋值操作创建新的动态变量或对象采用动态赋值操作创建新的动态变量或对象 格式:格式:*指针变量名指针变量名=new=new 类型;类型;delete delete 指针变量名指针变量名 例例:if(!(p=new int):if(!(p=new int)/用于执行出错程序用于执行出错程序 if(p=(int*)malloc(sizeof(int)=NULL)if(p=(int*)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品2章_从C快速过渡到C+ 2 精品 快速 过渡 C+
限制150内