版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2第3章数据类型__简单数据类型数据类型__简单类型共38页,您现在浏览的是第1页!本章目录§3.1C++的字符集§3.2标识符和关键字§3.3数据类型简单数据类型(一)数组(二)指针(三)引用(四)数据类型__简单类型共38页,您现在浏览的是第2页!数据是程序处理的基本对象在程序中每种数据都应有确定的类型每种数据类型的变量都有确定的存储长度、取值范围及允许的操作。
§3.1C++的字符集(CHARACTERSET)每种语言都使用一组字符构造程序的基本单元,C++的字符集由下列字符组成:大小写英文字母a-z和A-Z数字字符0-9其他字符+-*/=,._:;?\“‘~|!#%&()[]{}^<>(空格)等数据类型__简单类型共38页,您现在浏览的是第3页!sizeofstatic
structswitchtypedef
unionunsignedvoidvolatilewhileboolcatchclassconst_castdeletedynamic_castexplicitfalsefriendinlinemutablenamespacenewoperatorprivateprotectedpublicreinterpret_caststatic_casttemplatethisthrowtruetrytypeidtypenameusingvirtualwchar_tasmcdeclfarhugeinterruptnearpascalexportexceptfastcallsaveregsstdcallsegsyscallfortranthread红色:C的32个关键字黄色:C++补充的29个关键字白色:BC和VC扩充的保留字数据类型__简单类型共38页,您现在浏览的是第4页!§3.3数据类型
程序中数据分为变量或常量,每个变量或常量都有确定的数据类型。空类型void数组type[]指针type*引用type&结构struct联合union枚举enum类class数据类型基本数据类型非基本数据类型用于定义基于基本数据类型和外部数据类型外部数据类型整型int字符型实型逻辑型bool单精度型float双精度型double单字符型char宽字符型w_char注:黄色标识的类型是C++中有而C没有的,其他两者皆有数据类型__简单类型共38页,您现在浏览的是第5页!3.3.1整型整数在计算机中的存储形式:二进制补码整数的表示范围:见P67表3-2整数的类型:signed,unsigned(char,shortint,int,longint)存储长度满足char<=shortint<=int<=longint注:长整数表示为123l123L无符号整数表示为123u
例如:b=02345L;c=235u+123u;数据类型__简单类型共38页,您现在浏览的是第6页!3.3.2整数子类型1、字符型2、枚举型3、布尔型(C++才有的类型)数据类型__简单类型共38页,您现在浏览的是第7页!转义字符——表示控制字符或具有特定用途的字符\a0x07响铃\’0x27单引号\n0x0A换行\ddd1-3位八进制数\t0x09制表符\xhh1-2位十六进制数\\0x5c反斜杠字符\”0x22双引号字符变量的初始化chara=‘\007’,b=‘r’,c=‘\xab’;数据类型__简单类型共38页,您现在浏览的是第8页!3、布尔型(bool)——C++中的类型bool型变量只有true和false两个逻辑值,在编译系统中,其定义相当于
enumbool{false,true};由于bool型是整数的子类型,所以可以用任何整数给bool型变量赋值,但是任何非0整数给bool型变量赋值时,其值都为1,非整数的其他类型也一样,总之,只要非0,其值都为1。boola=3;//a为tureboolb=1;//b为tureboolc=a+b;//c为tureboold=true;//d为tureboole=a-b;//e为false
完整的例子注意:bool是C++中的类型,C语言中没有此类型,但是C中有BOOL,使用BOOL需要包含头文件<windows.h>
在C中使用BOOL的完整的例子数据类型__简单类型共38页,您现在浏览的是第9页!3.3.4C-串与string在C++中表示字符串的类型有以下三种C++字符指针char*字符数组char[]字符串string沿袭CC不支持数据类型__简单类型共38页,您现在浏览的是第10页!由于字符串常量的地址属性,所以由相同字符组成的字符串常量是两个不同起始地址的字符串常量。例如://f0303.cpp#include<iostream>usingnamespacestd;intmain(){cout<<(“join”==“join”?“”:”not”)<<“equal\n”;char*str1=“good”;char*str2=“good”;cout<<(str1==str2?“”:“not”)<<“equal\n”;charbuffer1[6]=“Hello”;charbuffer2[6]=“Hello”;cout<<(buffer1==buffer2?“”:“not”)<<“equal\n”;}notequalnotequalnotequal数据类型__简单类型共38页,您现在浏览的是第11页!例如:#include<iostream>usingnamespacestd;voidmain(){charbuffer[10]=“ABC”;char*pc;pc=“hello”;cout<<buffer<<endl;//输出ABCcout<<pc<<endl;//输出hellopc++;cout<<pc<<endl;//输出ellocout<<*pc<<endl;//输出epc=buffer;cout<<pc;//输出ABC}数据类型__简单类型共38页,您现在浏览的是第12页!①字符串输出调用格式:C++:cout<<字符串;C:printf(“%s”,字符串名);puts(字符串首地址);功能:输出字符串。例如:char*s=“hello”;charss[]=“Jim”;cout<<s<<‘,’<<ss<<endl;
(5)字符串的相关操作charbuffer[10]=“ABC”;char*pc=“hello”;printf(“%s”,buffer);//puts(buffer);printf(“%s”,pc);
//puts(pc);
数据类型__简单类型共38页,您现在浏览的是第13页!b.调用格式2:C++:cin.getline(字符数组名,变量大小)C:gets(字符数组名)功能:从键盘输入一个以enter键标志结束的字符串。例如:chars[81];cin.getline(s,81);//也可以gets(s);数据类型__简单类型共38页,您现在浏览的是第14页!③字符串连接函数strcat(要包含头文件<string.h>)调用形式:char*strcat(字符数组1,字符串2);功能:将字符串2连接于字符数组1的后面,函数返回连接以后的结果.例如:
charstr1[20]=”Thisisa”;charstr2[]=”string”;//也可以为char*str2=“string.”;printf("%s\n",strcat(s1,s2));printf("%s,%s\n",s1,s2);输出:
ThisisastringThisisastrings,string数据类型__简单类型共38页,您现在浏览的是第15页!⑤字符比较函数strcmp(要包含头文件<string.h>)调用形式:intstrcmp(字符串1,字符串2);功能:将两字符串的字符从左到右逐个进行比较.返回值为比较结果.字符串1=字符串2返回值为0字符串1>字符串2返回值为1字符串1<字符串2返回值为-1例如:i=strcmp(”chinese”,”china”);则:i等于1数据类型__简单类型共38页,您现在浏览的是第16页!⑦求子串位置strstr(要包含头文件<string.h>)调用格式:char*strstr(字符串,子串);功能:在字符串中寻找与子串相同的子串,如找到,返回该字符串的从子串起始处开始的后半部分,否则返回一空字符串。例如:chars[]=“abcdefghi”;cout<<s[3]<<‘‘<<strstr(s,”def”);则输出为:ddefghi数据类型__简单类型共38页,您现在浏览的是第17页!⑨改变字符串中的全部字符strset(要包含string.h)格式:char*strset(字符数组,charb)功能:将字符数组中的每个字符都用b字符来取代,并将改变后的字符数组返回。例如:chars1[]=“abc”;cout<<strset(s1,’x’)<<‘,’<<s1<<endl;输出:xxx,xxx数据类型__简单类型共38页,您现在浏览的是第18页!2、string类型string是C++中的自定义类型,它可以方便地执行C-串所不能直接执行的一切操作。定义方式:strings1=“Hello”,t;//s1对象的字符串值为Hellostrings2(“Hello”);//s2对象的字符串值为Hellostringt(15,’H’);//t对象是由15个H字符构成的字符串stringu(15);//u对象是由15个空白字符构成的字符串数据类型__简单类型共38页,您现在浏览的是第19页!string类型的输出:strings1,s2;getline(cin,s1);//输入中可以有空格cin>>s2;//输入中不能有空格cout<<s1<<endl<<s2<<endl;string类型较之字符指针的优缺点优点:使用灵活方便缺点:当字符处理量大的时候,性能上逊于字符指针数据类型__简单类型共38页,您现在浏览的是第20页!§3.2标识符和关键字(IdentifiersandReservedwords)
程序设计语言中为变量、常量、类型、函数等取的名字称为标识符。标识符由大小写字母、数字和下划线组成,并且只能以字母或下划线开始。关键字是编译器已预定义好的,具有特定含义的标识符,也称为保留字。C++保留字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsigned数据类型__简单类型共38页,您现在浏览的是第21页!下列变量名哪些合法?Way_coolmyCarcaseBits32IptrcoutALot-vvswitchWhile52selectwhile数据类型__简单类型共38页,您现在浏览的是第22页!类型修饰符short(int)long(int,double)signed,unsigned(char,int)类型定义typedef为已有类型名取一个新名字。typedefintinteger;integera;//等价于inta;数据类型__简单类型共38页,您现在浏览的是第23页!整型常数即整型常量(整数字面值),有三种表示方法:十进制整数123,-784八进制整数0123=十六进制整数
注:八进制和十六进制只能表示正整数例如:inta=23;longintb=02345;unsignedintc=0x79fa;)83()123(108=)291()123(12301016==x数据类型__简单类型共38页,您现在浏览的是第24页!1、字符型(char)字符的表示单引号括起的字符,称为字符常量。如:‘a’,‘9’,‘+’字符的存储:1个字节(256种状态:对于signedchar,此类型的0~127用于ASCII编码,-1~-128表示非正常状态;对于unsignedchar而言,此类型表示的整数范围为0~255)。由于char是int的子集,所以char数据可以参与到整数的运算中去,但是在输出上还是按本身类型输出。
inta=‘b’;charc=97;intx=a+’\a’;//x=98+7=105cout<<a<<endl;//输出:98cout<<c<<endl;//输出:a数据类型__简单类型共38页,您现在浏览的是第25页!2、枚举型(enumType)//应用举例:获取当前系统时间枚举型是对整数区间的自定义类型,用户须为区间中的值取名。enumcolor{RED,BLUE,GREEN,WHITE,BLACK};Color是自定义的枚举类型。枚举成员RED,BLUE,GREEN等都是符号常量,枚举成员值按序初始化为0~N。上例中RED—BLACK的值分别为0-4。在定义枚举类型时也可为其成员指定枚举值:
enumcolor{RED,BLUE=100,GREEN,WHITE,BLACK};此时,RED为0,BLUE-BLACK分别为100-103。一旦定义了枚举类型,该类型的变量的取值范围也确定了,即其变量只能取花括号中的枚举值。colorpoint=GREEN;正确colorpoint=YELLOW;错误虽然枚举值对应整数,但是枚举变量却不能取得整数值。例如:colorc=0;//error:0是非枚举类型(虽然RED代表整数0)枚举类型的作用:一般作为整数常量使用。数据类型__简单类型共38页,您现在浏览的是第26页!3.3.3浮点型实数,也称浮点数,有float,double和longdouble三种类型实型常量在书写时,默认为double类型,若要表示float类型,要在其后加上F或f。floatf1=19.2f;floatf2=0.192e+02;//将double类型的值转换成floatdoubled1=19.2;doubled2=0.192e+02f;//将float类型的值转换成doublelongdoubleld1=19.2L;longdoubleld2=0.192e+02;//将double类型的值转换成longdouble两种表示方法:(1)定点数形式1.123,3.1415;(2)科学计数法形式123e5,123E5都表示有效位float(4字节)7位double(8字节)15位longdouble(10字节)19位数据类型__简单类型共38页,您现在浏览的是第27页!1、字符指针与字符串(1)字符串常量由一对双引号括起的字符序列称为字符串常量。“Howdoyoudo?”“china”字符串常量以‘\0’结束。字符串常量通常存放在dataarea的const区中,并以‘\0’作为结束符,编译器记下其起始地址.即:地址代表了这个字符串常量。chin‘\0’a数据类型__简单类型共38页,您现在浏览的是第28页!(2)字符数组
数组中每个元素为字符的数组称为字符数组,字符数组可用单个字符常量初始化,也可用字符串常量初始化,例如:
charbuffer[]=“hello”;
charbuffer[]={‘h’,’e’,’l’,’l’,’o’,’\0’}定义数组时可以指定元素个数,也即数组的大小;一旦指定了元素个数,则给数组赋值的元素个数一定要小于等于指定的个数。
如:charbuffer[7]=“hello!”;//rightcharbuffer[6]=“hello!”;//error(3)字符指针指向字符类型的指针称为字符指针。如:char*str=“abc”;字符串常量和字符数组名都具有地址特性,当把它们赋给一个字符指针后,编译器规定:输出字符指针就是输出字符串;输出字符指针指向的对象(*),就是输出单个字符。二者等价数据类型__简单类型共38页,您现在浏览的是第29页!(4)字符数组和字符指针的区别字符数组也是字符指针,但是是字符指针常量,即constchar*类型,也即字符数组一旦定义好,字符数组名是不能被重新赋值的.而这里的字符指针类型char*用来定义字符指针变量,它被赋值后是可以再次赋值的.访问单个字符的方式不一样,字符数组采用数组名加下标的方式,字符指针采用字符指针加*的方式例如:#include<iostream>usingnamespacestd;voidmain(){charbuffer[10]=“ABC”;char*pc=“hello”;cout<<buffer<<endl;//输出ABCcout<<pc<<endl;//输出hellopc=“hi”;//rightcout<<pc;//输出hibuffer=“hi”;//errorcout<<buffer[2]<<endl;//输出C字符cout<<*pc<<endl;//输出h字符}数据类型__简单类型共38页,您现在浏览的是第30页!②字符串输入a.调用格式1:C++:cin>>字符串变量;C:scanf(“%s%s”,s1,s2);功能:输入一个无空白字符的字符串。例如:chars1[50],s2[50];
cin>>s1>>s2;//scanf(“%s%s”,s1,s2);若输入ABCD123XYZWTR则s1和s2分别取得的值为ABCD和123XYZ数据类型__简单类型共38页,您现在浏览的是第31页!关于char*类型字符串的输入字符指针的赋值可以通过程序中”=“赋值,也可以通过输入赋值数组定义好后可以输入时直接赋值,但对于字符指针变量,应先分配空间再赋值例如:C语言版字符指针类型字符串输入C++版字符指针类型字符串输入数据类型__简单类型共38页,您现在浏览的是第32页!④字符串拷贝函数strcpy(要包含头文件<string.h>)调用形式:char*strcpy(字符数组1,字符串2);功能:将数组2拷贝到数组1中,并返回字符数组1例如:
chars1[10]="abcdef";char*s2="def";printf("%s\n",strcpy(s1,s2));printf("s1=%s,s2=%s\n",s1,s2);
输出:defs1=def,s2=def思考题:若有
chars1[]=“abc”;chars2[]=“def”;//或者char*s2=“def”;则使用”=“进行赋值s1=s2可不可以?为什么?数据类型__简单类型共38页,您现在浏览的是第33页!
⑥测试字符串长度函数strlen(要包含头文件<string.h>)调用形式:intstrlen(字符串);功能:测试字符串中字符个数,并将个数返回.例如:charstr1[10]={”Turboc”};cout<<strlen(str1);输出:7数据类型__简单类型共38页,您现在浏览的是第34页!⑧反转字符串strrev(要包含头文件<string.h>)调用格式:char*strrev(字符数组)功能:将字符数组反转,并改变原来的存储,同时将反转后的字符串返回.例如:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粉笔板项目运营指导方案
- 人工授精用动物精液产品供应链分析
- 真空吸尘器用滤尘器商业机会挖掘与战略布局策略研究报告
- 俯卧撑支架产业链招商引资的调研报告
- 书籍封面的平面设计行业相关项目经营管理报告
- 卡祖笛产品供应链分析
- 自行车车闸项目运营指导方案
- 装饰用木条市场分析及投资价值研究报告
- 医用箭毒产品供应链分析
- 生产加工用香精油市场发展前景分析及供需格局研究预测报告
- 《大学生创新创业教育》教案 项目5 组建创业团队
- 湖南儿童塑胶跑道施工方案
- 足球-正面头顶球教案
- 小学道德与法治-天下兴亡匹夫有责的爱国情怀教学设计学情分析教材分析课后反思
- 2023-2024学年安徽省县中联盟高二上学期10月联考物理试卷和答案
- 高中历史学科课堂教学评价量表(试用)
- 广东省通用安装工程综合定额(2018)Excel版
- 《高铁乘务安全管理及应急处置》课程教案-崔艺琳编写
- 数据仓库与大数据分析平台构建方案
- 五年级上册科学水的作用课件
- 服装家居服成品检验标准
评论
0/150
提交评论