数据类型__简单类型.ppt

上传人:赵** 文档编号:68600163 上传时间:2022-12-29 格式:PPT 页数:38 大小:188KB
返回 下载 相关 举报
数据类型__简单类型.ppt_第1页
第1页 / 共38页
数据类型__简单类型.ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《数据类型__简单类型.ppt》由会员分享,可在线阅读,更多相关《数据类型__简单类型.ppt(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 2 2第3章数据类型_简单数据类型 本章目录3.1C+的字符集的字符集3.2 标识符和关键字标识符和关键字3.3 数据类型数据类型简单数据类型简单数据类型(一一)数组数组(二二)指针指针(三三)引用引用(四四)数据是程序处理的基本对象数据是程序处理的基本对象在程序中每种数据都应有确定的类型在程序中每种数据都应有确定的类型每种数据类型的变量都有确定的存储长度、取值范每种数据类型的变量都有确定的存储长度、取值范围及允许的操作。围及允许的操作。3.C+的字符集(的字符集(CHARACTERSET)每种语言都使用一组字符构造程序的基本单元,每种语言都使用一组字符构造程序的基本单元,C+的的字符集由下

2、列字符组成:字符集由下列字符组成:大小写英文字母和大小写英文字母和数字字符数字字符其他字符其他字符 *,._:;?“|!#%&()(空格空格)等等 3.标识符和关键字标识符和关键字(IdentifiersandReserved words)程序设计语言中为变量、常量、类型、函数等程序设计语言中为变量、常量、类型、函数等取的名字称为标识符。取的名字称为标识符。标识符由大小写字母、数字和下划线组成,并标识符由大小写字母、数字和下划线组成,并且只能以字母或下划线开始。且只能以字母或下划线开始。关键字是编译器已预定义好的,具有特定含义关键字是编译器已预定义好的,具有特定含义的标识符,也称为保留字。的标

3、识符,也称为保留字。C+保留字保留字auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while bool catch class const_cast delete dynamic_cast explicit false friend inline mutable

4、 namespace new operator private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual wchar_tasm cdecl far huge interrupt near pascal export except fastcall saveregs stdcall seg syscall fortran thread 红色:C的32个关键字 黄色:C+补充的29个关键字白色:BC和VC扩充的保留字 下列变量名哪些

5、合法?Way_cool myCarcase Bits32Iptr coutA Lot -vvswitch While52select while 3.数据类型数据类型程序中数据分为变量或常量,每个变量或常量都有确定的数据类型。空类型空类型void数组数组type 指针指针type*引引 用用 type&结构结构struct联合联合union枚举枚举enum类类class数据类型数据类型基本数据类型基本数据类型非基本数据类型非基本数据类型用于定义基于基本数用于定义基于基本数据类型和外部数据类据类型和外部数据类型型外部数据类型整型整型int字符型字符型实型实型逻辑型逻辑型bool单精度型单精度型f

6、loat双精度型双精度型double单字符型单字符型char宽字符型宽字符型w_char注:黄色标识的类型是C+中有而C没有的,其他两者皆有 类型修饰符类型修饰符short(int)long(int,double)signed,unsigned(char,int)类型定义类型定义typedef为已有类型名取一个新名字。为已有类型名取一个新名字。typedef int integer;integer a;/等价于等价于 int a;3.3.1整型整数在计算机中的存储形式:二进制补码整数的表示范围:见P67表3-2整数的类型:signed,unsigned(char,short int,int,l

7、ong int)存储长度满足存储长度满足char=short int=int=long int注:注:长整数表示为长整数表示为 123l 123L 无符号整数表示为无符号整数表示为 123u 例如:例如:b=02345L;c=235u+123u;整型常数即整型常量整型常数即整型常量(整数字面值),有三种表示方法:整数字面值),有三种表示方法:十进制整数十进制整数123,-784 八进制整数八进制整数 0123=十六进制整数十六进制整数 注注:八进制和十六进制只能表示正整数八进制和十六进制只能表示正整数 例如例如:int a=23;long int b=02345;unsigned int c=

8、0 x79fa;)83()123(108=)291()123(12301016=x 3.3.2 整数子类型1、字符型2、枚举型3、布尔型(C+才有的类型)1、字符型(、字符型(char)字符的表示字符的表示单引号括起的字符,称为字符常量。单引号括起的字符,称为字符常量。如:如:a,9,+字符的存储:字符的存储:1个字节(个字节(256种状态:对于种状态:对于signed char,此类型的此类型的0127用于用于ASCII编码,编码,-1-128表示非正常状态;表示非正常状态;对于对于unsigned char 而言,此类型表示的整数范围为而言,此类型表示的整数范围为0255)。)。由于由于c

9、har是是int的子集,所以的子集,所以char数据可以参与到整数的数据可以参与到整数的运算中去,但是在输出上还是按本身类型输出。运算中去,但是在输出上还是按本身类型输出。int a=b;char c=97;int x=a+a;/x=98+7=105 coutaendl;/输出:输出:98 coutcendl;/输出:输出:a 转义字符转义字符表示控制字符或具有特定用途的字符表示控制字符或具有特定用途的字符 a 0 x07 响铃响铃 0 x27单引号单引号 n 0 x0A换行换行 ddd 13位八进制数位八进制数 t 0 x09 制表符制表符 xhh 12位十六进制数位十六进制数 0 x5c

10、反斜杠字符反斜杠字符 ”0 x22 双引号双引号字符变量的初始化字符变量的初始化 char a=007,b=r,c=xab;2、枚举型(、枚举型(enum Type)/应用举例:应用举例:获取当前系统时间获取当前系统时间枚举型是对整数区间的自定义类型,用户须为区间中的值取名。枚举型是对整数区间的自定义类型,用户须为区间中的值取名。enum color RED,BLUE,GREEN,WHITE,BLACK;Color是自定义的枚举类型。是自定义的枚举类型。枚举成员枚举成员RED,BLUE,GREEN等都是符等都是符号常量,枚举成员值按序初始化为号常量,枚举成员值按序初始化为0N。上例中。上例中R

11、EDBLACK的值分别为的值分别为0。在定义枚举类型时也可为其成员指定枚举值在定义枚举类型时也可为其成员指定枚举值 :enum colorRED,BLUE=100,GREEN,WHITE,BLACK;此时,此时,RED 为为0,BLUEBLACK分别为分别为100 103。一旦定义了枚举类型,该类型的变量的取值范围也确定了,即其变量只能取一旦定义了枚举类型,该类型的变量的取值范围也确定了,即其变量只能取花括号中的枚举值。花括号中的枚举值。color point=GREEN;正确正确 color point=YELLOW;错误错误虽然枚举值对应整数,但是枚举变量却不能取得整数值。虽然枚举值对应整

12、数,但是枚举变量却不能取得整数值。例如:例如:color c=0;/error:0是非枚举类型(虽然是非枚举类型(虽然RED代表整数代表整数0)枚举类型的作用:一般作为整数常量使用。枚举类型的作用:一般作为整数常量使用。3、布尔型(、布尔型(bool)C+中的类型中的类型bool型变量只有true和false两个逻辑值,在编译系统中,其定义相当于 enum bool false,true;由于bool型是整数的子类型,所以可以用任何整数给bool型变量赋值,但是任何非0整数给bool型变量赋值时,其值都为1,非整数的其他类型也一样,总之,只要非0,其值都为1。bool a=3;/a为ture

13、bool b=1;/b为ture bool c=a+b;/c为ture bool d=true;/d为ture bool e=a-b;/e为false 完整的例子注意:bool是C+中的类型,C语言中没有此类型,但是C中有BOOL,使用BOOL需要包含头文件 在C中使用BOOL的完整的例子 3.3.3 浮点型实数,也称浮点数,有实数,也称浮点数,有float,double和和long double三种类型三种类型实型常量在书写时,默认为实型常量在书写时,默认为double类型,若要表示类型,若要表示float类型,要在其后类型,要在其后加上加上F或或f。float f1=19.2f;float

14、 f2=0.192e+02;/将将double类型的值转换成类型的值转换成float double d1=19.2;double d2=0.192e+02f;/将将float类型的值转换成类型的值转换成double long double ld1=19.2L;long double ld2=0.192e+02;/将将double类型的值转换成类型的值转换成long double两种表示方法:两种表示方法:()定点数形式()定点数形式1.123,3.1415;()科学计数法形式()科学计数法形式 123e5,123E5都表示都表示有效位有效位float(4字节字节)7位位double(8字节字节

15、)15位位long double (10字节字节)19位位 3.3.4 C-串与string在C+中表示字符串的类型有以下三种C+字符指针 char*字符数组 char 字符串 string沿袭CC不支持 1、字符指针与字符串、字符指针与字符串(1 1)字符串常量)字符串常量)字符串常量)字符串常量由一对双引号括起的字符序列称为字符串常量。由一对双引号括起的字符序列称为字符串常量。“How do you do?”“china”字符串常量以字符串常量以0结束。结束。字符串常量通常存放在字符串常量通常存放在data area 的的const 区中,并区中,并以以0作为结束符,编译器记下其起始地址作

16、为结束符,编译器记下其起始地址.即:即:地址代表了这个字符串常量。地址代表了这个字符串常量。chin0a 由于字符串常量的地址属性,所以由相同字符组成的由于字符串常量的地址属性,所以由相同字符组成的字符串常量是两个不同起始地址的字符串常量。字符串常量是两个不同起始地址的字符串常量。例如:例如:/f0303.cpp#includeusing namespace std;int main()cout(“join”=“join”?“”:”not”)“equaln”;char*str1=“good”;char*str2=“good”;cout(str1=str2?“”:“not”)“equaln”;c

17、har buffer16=“Hello”;char buffer26=“Hello”;cout(buffer1=buffer2?“”:“not”)“equaln”;not equalnot equalnot equal (2 2)字符数组)字符数组)字符数组)字符数组 数组中每个元素为字符的数组称为字符数组,字符数组可用单个字符常量数组中每个元素为字符的数组称为字符数组,字符数组可用单个字符常量初始化,也可用字符串常量初始化,例如:初始化,也可用字符串常量初始化,例如:char buffer=“hello”;char buffer=h,e,l,l,o,0定义数组时可以指定元素个数,也即数组的大

18、小;一旦指定了元素个数,定义数组时可以指定元素个数,也即数组的大小;一旦指定了元素个数,则给数组赋值的元素个数一定要小于等于指定的个数。则给数组赋值的元素个数一定要小于等于指定的个数。如:如:char buffer7=“hello!”;/right char buffer6=“hello!”;/error(3)字符指针)字符指针 指向字符类型的指针称为字符指针。指向字符类型的指针称为字符指针。如:如:char*str=“abc”;字符串常量和字符数组名都具有地址特性,当把它们赋给一个字符指针后,字符串常量和字符数组名都具有地址特性,当把它们赋给一个字符指针后,编译器规定:编译器规定:输出字符指

19、针就是输出字符串;输出字符指针就是输出字符串;输出字符指针指向的对象输出字符指针指向的对象(*),就是输出单个字符。,就是输出单个字符。二者等价 例如:例如:#include using namespace std;void main()char buffer10=“ABC”;char*pc;pc=“hello”;coutbufferendl;/输出输出ABC coutpcendl;/输出输出hello pc+;coutpcendl;/输出输出ello cout*pcendl;/输出输出e pc=buffer;coutpc;/输出输出ABC ()字符数组和字符指针的区别()字符数组和字符指针的

20、区别字符数组也是字符指针,但是是字符指针常量字符数组也是字符指针,但是是字符指针常量,即即const char*类型,也即字符类型,也即字符数组一旦定义好,字符数组名是不能被重新赋值的数组一旦定义好,字符数组名是不能被重新赋值的而这里的字符指针类型而这里的字符指针类型char*用来定义字符指针变量,它被赋值后是可以再次赋用来定义字符指针变量,它被赋值后是可以再次赋值的值的访问单个字符的方式不一样访问单个字符的方式不一样,字符数组采用数组名加下标的方式字符数组采用数组名加下标的方式,字符指针采用字符指针采用字符指针加字符指针加*的方式的方式例如:例如:#include using namespa

21、ce std;void main()char buffer10=“ABC”;char*pc=“hello”;coutbufferendl;/输出输出ABC coutpcendl;/输出输出hello pc=“hi”;/right coutpc;/输出输出hi buffer=“hi”;/error coutbuffer2endl;/输出输出C字符字符 cout*pcendl;/输出输出h字符字符 字符串输出调用格式:C+:cout 字符串;C:printf(“%s”,字符串名);puts(字符串首地址);功能:输出字符串。例如:char*s=“hello”;char ss=“Jim”;couts

22、,ss字符串变量;C:scanf(“%s%s”,s1,s2);功能:输入一个无空白字符的字符串。例如:char s150,s250;cins1s2;/scanf(“%s%s”,s1,s2);若输入ABCD 123XYZ WTR 则s1和s2分别取得的值为ABCD和123XYZ b.调用格式2:C+:cin.getline(字符数组名,变量大小)C:gets(字符数组名)功能:从键盘输入一个以enter键标志结束的字符串。例如:char s81;cin.getline(s,81);/也可以 gets(s);C.关于关于char*类型字符串的输入类型字符串的输入字符指针的赋值可以通过程序中字符指针

23、的赋值可以通过程序中”=“赋赋值值,也可以通过输入赋值也可以通过输入赋值数组定义好后可以输入时直接赋值数组定义好后可以输入时直接赋值,但对但对于字符指针变量于字符指针变量,应先分配空间再赋值应先分配空间再赋值例如例如:C语言版字符指针类型字符串输入语言版字符指针类型字符串输入C+版字符指针类型字符串输入版字符指针类型字符串输入 字符串连接函数字符串连接函数strcat(要包含头文件)调用形式调用形式:char*strcat(字符数组字符数组1,字符串字符串2);功能功能:将字符串将字符串2连接于字符数组连接于字符数组1的后面的后面,函数返回函数返回连接以后的结果连接以后的结果.例如例如:cha

24、r str120=”This is a”;char str2=”string”;/也可以为也可以为char*str2=“string.”;printf(%sn,strcat(s1,s2);printf(%s,%sn,s1,s2);输出输出:This is a stringThis is a strings,string 字符串拷贝函数字符串拷贝函数strcpy(要包含头文件)调用形式调用形式:char*strcpy(字符数组字符数组1,字符串字符串2);功能功能:将数组将数组2 拷贝到拷贝到 数组数组1中中,并返回字符数组并返回字符数组1例如例如:char s110=abcdef;char*s

25、2=def;printf(%sn,strcpy(s1,s2);printf(s1=%s,s2=%sn,s1,s2);输出输出:def s1=def,s2=def 思考题思考题:若有若有 char s1=“abc”;char s2=“def”;/或者或者char*s2=“def”;则使用则使用”=“进行赋值进行赋值s1=s2可不可以可不可以?为什么为什么?字符比较函数字符比较函数strcmp(要包含头文件)调用形式调用形式:int strcmp(字符串字符串1,字符串字符串2);功能功能:将两字符串的字符从左到右逐个进行比较将两字符串的字符从左到右逐个进行比较.返回值为比较结果返回值为比较结果.

26、字符串字符串1=字符串字符串2 返回值为返回值为0 字符串字符串1字符串字符串2 返回值为返回值为1 字符串字符串1字符串字符串2 返回值为返回值为-1例如例如:i=strcmp(”chinese”,”china”);则则:i等于等于1 测试字符串长度函数测试字符串长度函数strlen(要包含头文件)调用形式调用形式:int strlen(字符串字符串);功能功能:测试字符串中字符个数测试字符串中字符个数,并将个数返回并将个数返回.例如例如:char str110=”Turbo c”;cout strlen(str1);输出输出:7 求子串位置strstr(要包含头文件)调用格式:char*s

27、trstr(字符串,子串);功能:在字符串中寻找与子串相同的子串,如找到,返回该字符串的从子串起始处开始的后半部分,否则返回一空字符串。例如:char s=“abcdefghi”;couts3 strstr(s,”def”);则输出为:d defghi 反转字符串strrev(要包含头文件)调用格式:char*strrev(字符数组)功能:将字符数组反转,并改变原来的存储,同时将反转后的字符串返回例如:char s1=“abc”;printf(“%sn”,strrev(s1);/输出cba 改变字符串中的全部字符strset(要包含string.h)格式:char*strset(字符数组,ch

28、ar b)功能:将字符数组中的每个字符都用b字符来取代,并将改变后的字符数组返回。例如:char s1=“abc”;coutstrset(s1,x),s1endl;输出:xxx,xxx 查找单个字符strchr格式:char*strchr(字符串,char b);功能:在字符串中查找b字符,若找到,则返回从找到的位置开始后的整个字符串,若没找到,则返回null.举例:#include#include using namespace std;void main()char s1=abcde;coutstrchr(s1,c)endl;/输出cde 2、string类型string是C+中的自定义类

29、型,它可以方便地执行C-串所不能直接执行的一切操作。定义方式:string s1=“Hello”,t;/s1对象的字符串值为Hellostring s2(“Hello”);/s2对象的字符串值为Hellostring t(15,H);/t对象是由15个H字符构成的字符串string u(15);/u对象是由15个空白字符构成的字符串 举例 /f0305.cpp#include#include /程序中使用了reverse()函数#includeusing namespace std;void main()string a,s1=Hello;string s2=123;a=s1;/复制 cout(a=s1?:not)equal n;/比较 cout(a+=s2)endl;/连接 reverse(a.begin(),a.end();/倒置串 coutaendl;couta.replace(0,9,9,c)endl;/设置 cout(s1.find(ell)!=-1?:not)found n;/查找串 cout(s1.find(c)!=-1?:not)s2;/输入中不能有空格 couts1endls2endl;string类型较之字符指针的优缺点优点:使用灵活方便缺点:当字符处理量大的时候,性能上逊于字符指针 其它复杂数据类型数组向量*指针引用结构与联合(补充)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com