版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 C+语法之数据类型,计算机的作用无非就是存储和计算,而存储和计算都离不开数据格式,不同的数据格式意味着存储和计算的方式不尽相同。本章是C+知识的开始篇章,将着重介绍C+的数据类型,让读者了解C+具有哪些数据类型。数据类型是构成程序设计的基础,希望读者能够扎实掌握本章内容,本章主要修行的要点如下。 C+简介:让读者能够了解C+的过去和现今的情况。 简单变量:读者能够学会C+的简单变量,如整型变量、浮点型变量等。 算术运算符:读者能够使用算术运算符进行简单变量的数学运算。 枚举、指针和数组:读者将学会枚举、指针和数组数据类型的定义和使用。 字符串类型:读者将学会string类和C风格字符串
2、。 结构体类型和类类型:读者将学会C+语言理论中最重要的两种复合类型结构体类型和类类型。,2.1 C+发展历史和相关背景,在Visual C+学习中,C+程序设计语言绝对是顽徒孙悟空,非常难驯服。但读者也不用太担心,唐僧没有法力都能驯服孙悟空,我们也一样可以做到,关键在于要让C+带上紧箍咒,这个紧箍咒就是牢牢抓住面向对象的本质。 美国AT/ 定义一个整型变量,表示我拥有的苹果数目 MyApples = 7;/ 给该整型变量赋值为7,表示我现在拥有7个苹果,2.3 简单变量的定义和使用,简单变量是指变量中最基本的单元。广义上的变量还包括数组变量、指针变量、结构体变量和类对象,这些变量相对来说比较
3、复杂,如结构体变量是由多个简单变量或结构体组成,而类对象则更复杂,不仅包括多个其他任何类型变量,还可以包括函数。本节从简单变量入手,慢慢地带读者了解全部的C+数据类型。,2.3.1 整型的定义和字长,【本小节示例参考:源代码C02sizeofDataType】 顾名思义,整型就是整数类型,以代数的概念来说,就是:正整数、零和负整数。而计算机不能像代数中的整数一样可以表示所有的整数,因此C+中的整型类型只是所有整数集合的一个子集,也就是只能表示一部分整数。C+提供了几种宽度不同的整型供开发者选择,按照宽度排序有char、short、int和long,每种类型都有“有符号”和“无符号”两种版本,也
4、就是类似于整数有正整数和负整数之分,因此,C+整型就有8种可供用户选择。在Win32环境下(Windows操作系统32位处理器),不同类型的整型如表2.1所示。,2.3.2 浮点型的定义和字长,浮点类型顾名思义就是小数点能够自由浮动的数据类型,它主要有3种,即float、double和long double。浮点类型对于字长的要求如表2.2所示。 浮点型的变量读者可以简单地理解为具有小数点的变量类型,而整型变量则对应于初中代数中的整数,整数当然就包括正整数、0和负整数。在此需要提醒读者的是,需要了解各种数据类型,但不要花太多时间去钻研这些小问题,毕竟我们需要的是掌握程序设计的方法,而不是做理论
5、研究。就如唐三藏取西经,沿途收拾妖怪只是为了自己开路,而不是要将全世界的妖怪都消灭光才算数。,2.3.3 布尔类型的定义和运算,【本小节示例参考:源代码C02boolCompute】 布尔类型这个名字比较奇怪,它来源于英国数学家布尔,该类型的变量取值不像整型一样,可以取0、1、2、3等多个值,也不像浮点型一样可以取不连续的值,它的取值就只有两个,即true或false。布尔类型常用于判断语句中用于判断该执行哪个代码段,布尔变量可以定义为: bool bReally = true ;/ 定义一个布尔型变量,并初始化为true bool bTrue = false ;/ 定义一个布尔型变量,并初始
6、化为true,2.4 算术运算符的基本操作,【本节示例参考:源代码C02mathCompute】 读者可能对数学中的各种运算符号记忆犹新,如果不会基本运算,估计本节没有办法继续下去哦,至少加减乘除总是一辈子都不会忘记的,在计算机中也同样有各种算术运算符,如果在程序中有如下的语句: int apples = 3+9 ;/ 定义变量apples,初始化为3+9的运算结果 在这个语句中,“3”和“9”是操作数,“+”符号是一个算术运算符,“3+9”是一个运算表达式,其值为“12”。C+提供的算术运算符有5种: “+”:加运算符。 “-”:减运算符。 “*”:乘运算符。 “/”:除运算符。 “%”:取
7、模运算符。,2.5 枚举、指针和数组,C+除了提供一些基本的数据类型外,还提供了一些其他额外的数据类型,如枚举、指针和数组类型,以及将在后面章节讲解的结构体和类类型,这些统称为复合数据类型。复合数据类型是由其他数据类型组合,或以基本数据类型为基础衍生出来的类型。,2.5.1 用枚举来设定变量的取值,前文已经介绍了常量类型,C+提供了一个enum的关键字用来创建枚举类型,实质上,枚举类型是常量类型的一种衍生类型,常量类型可以看作只有一个取值的枚举。假设要设计一个游戏程序,定义一个游戏角色移动的方向,可以定义枚举类型如下: enum direction east , south ,west ,no
8、rth;/ 定义枚举类型,并规定了4个取值 该语句定义了一个枚举类型direction,这个枚举类型可以表示东、南、西和北4个方向。对枚举类型的定义,不仅仅是定义了枚举的含义,而且定义了枚举变量的赋值类型: enum direction east , south ,west ,north;/ 定义枚举类型,该枚举类型只能取4个值 direction myDirection;/ 定义direction枚举类型的变量myDirection myDirection = east;/ 将myDirection变量赋值为east coutmyDirectionendl;/ 输出myDirection变量
9、的值,2.5.2 用指针表示变量的住址,【本小节示例参考:源代码C02pointer】 如前文所述,为了将数据信息记录在计算机中,并可以随时修改,程序必须记录以下3个基本属性: 信息存放的地址,即这个变量住哪?如某个地址123654。 变量存储的值,即这个变量是多少?如58。 变量的类型,即这个变量是什么类型的?如int整型。 一个变量的基本信息,如图2.4所示。,2.5.3 数组:多车厢的火车,【本小节示例参考:源代码C02array】 数组类型是高级程序设计语言中最常用的复合数据类型,在多项式或矩阵应用等科学计算中经常被使用。数组类型是一个由简单数据类型或复合数据类型组成的复合数据类型,因
10、此组成数组的基本元素可以是简单的数据类型,也可以就是数组本身。例如,数组可以存放30个整型的值,用来表示一个班30个学生的语文考试成绩,数组的声明应该指出: 数组中每个元素的类型:如必须指明该数据中的元素类型为整型int。 数组名:必须给该数组(复合数据类型变量)命名,如命名为Chinese。 数组的元素数目:如需要存放30个学生的语文成绩,则元素数目设定为30。 例如可以声明一个数组,用来存放一个班30个学生的语文考试成绩,则定义代码如下: int Chinese30 ;/ 定义一个整型的具有30个元素的数组,2.6 string类和C风格字符串,顾名思义,字符串就是由字符组成的串,也就是由
11、多个字符组成的变量,在C语言和C+语言中都分别有自己的字符串表示方式。本节就讲解这两种语言的字符串定义和使用的方式。,2.6.1 不好好学C+只能选择:C风格字符串,字符串是什么呢?就是字符组成的序列,字符并没有限定什么字符,基本上ASCII码的字符都可以当作字符串中的序列元素,如“abc”、“c3”或“123”都可以。在前文中讲解了数组的使用,那么字符串也可以使用数组来表示: char name10 ;/ 定义一个具有10个元素的字符型的数组 该行代码定义了一个具有10个字符类型的元素的数组,也可以说是由10个字符组成的字符串,并用这个字符串来表示一个名字,使用字符数组来表示字符串称为“C风
12、格字符串”。但是使用字符数组来表示字符串有很多不方便的地方: 修改困难。如前文所述,name是一个地址常量,因此不能直接对其赋值,因此name的初始化和赋值都要通过逐个字符赋值操作。 长度限制。name数组的长度是10,也就意味着name字符串最大只能表示10个字符的名字,而且最后一个元素还要用“0”字符数组结束标记,因此真正用于存储名字的有效字符只剩下9位。 粒度太小,不直观。对于软件开发,往往需要直接对字符串进行赋值或者修改,而数组型表示的字符串则要对数组的每个元素进行修改,粒度太小,增加了软件开发的工作量。,2.6.2 string如何解放C程序员的繁重劳动,【本小节示例参考:源代码C0
13、2stringUse】 C+是基于C的基础上发展而来的,因此C+也支持C风格字符串的使用,此外,C+还引入了string类的概念,该类是C+标准类,位于std名称空间内(只要是标准类或标准对象,都位于std名称空间内),string类提供了丰富的接口,如使用C风格的字符串,即使用字符数组的方式表示字符串,则无法直接查看该字符串的长度,只有查看源码中定义字符数组的容量,或者采用前文讲述的sizeof的方式“巧妙地”计算出数组的长度,再或者是逐个检测字符数组元素,并逐个数数,直到找到最后一个元素“0”为止。,2.7 数据类型是应用软件的细胞,数据类型在程序设计中是非常重要的,不管是面向过程的程序设
14、计语言还是面向对象的程序设计语言。在面向过程的程序设计语言中,不仅仅是简单变量,主要还依赖于类的定义。类的对象实质上也是一种数据类型的变量,称为类类型。 数据类型可以说是应用程序的细胞,计算机的实质是计算和存储,这两个操作都离不开数据对象。前文已经给各位读者介绍了基本数据类型,简单的变量可以看作是应用程序的简单细胞,而接下来的内容是结构体类型和类类型,这两种类型是简单细胞组成的“复杂细胞”,当然,“复杂细胞”也可以由“较小的复杂细胞”组成,也就是说,结构体和类类型也可以由较小的结构体变量或类对象组成。,2.8 结构体类型,【本小节示例参考:源代码C02structUse】 如果读者学过数据结构
15、,那么对结构体肯定是非常熟悉的,当然,如果痛恨数据结构,估计对结构体也够头疼的了。的确,结构体很麻烦,特别是带有指针的结构体,进而组成树状或图状的数据结构。不过请读者放心,本书不研究这些,只需要掌握最基础的且是最实用的部分即可。假设要存储一个学生的信息,需要记录的学生信息由学生秘书整理好一张学生信息表,如表2.5所示。,2.9 “类”类型,“类”类型的定义和结构体类型的定义是极为类似的,可以这么说,C+中的结构体类型已经和C语言的结构体类型截然不同,C+中的结构体类型是地地道道的类类型。类的定义的详细内容将在面向对象相关章节介绍。“类”类型与“double”类型、“int”类型或“struct
16、”类型的地位是一样的,都是一种“数据类型”。,2.9.1 “类”类型定义的语法形式,【本小节示例参考:源代码C02classUse】 假设前文所提到的学生信息要用到类来实现,即把一个具体的学生(人)看成一个对象,而把学生(这类人)看成一个类,那么可以定义为如代码示例2.9所示,这里的代码除了将struct变更为class外,还多了一些访问控制符,如private和public,以及多了两个类的成员函数。,2.9.2 “类”类型的函数实现,【本小节示例参考:源代码C02classUse_Right】 上一节的类类型定义并没有通过编译,原因就在于没有实现相关访问私有数据成员的功能,因此,不得不将代
17、码加以修正,以避免main()函数直接访问student类对象的私有成员。修正后的代码如代码示例2.11所示,该代码相比以前的实例新增的功能是,可以让类的私有数据成员通过构造函数来初始化。,2.10 小结,本章介绍了各种数据类型,是C+程序设计的入门章节,数据类型是程序设计语言的重点,如果读者对类类型理解不大也没关系,在本章大概了解即可,在后面章节将会深入讲解。通过本章的学习,读者应该掌握的内容如下: 常量和变量的定义:常量的两种定义方式、变量的定义和使用。 简单数据类型。 算术运算的规则。 枚举:枚举是规定了取值个数和范围的数据类型。 指针:指针是变量或对象的地址,指针变量是指向某变量或对象的符号。 数组:数组是多个变量的排列。 string类和C风格字符串:了解它们之间的区别和使用方式。 结构体类型和类类型:学会定义结构体和类,并了解它们的联系和区别。,本章习题,一、填空题 1根据程序运行中是否可以改变数据代号的值的类型可以分为_和_,可以改变值的类型称之为_,一经定义不可以再改变值的类型称为_。 2_变量类型用于标记其他变量或对象的地址符号,_变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年公司资产转让协议模板
- 2024年度旅游大巴租赁服务协议
- 2024年员工派遣服务协议
- 2024赛季足球场租赁协议范本
- 2024年建设工程委托代理协议
- 2024年科技支持服务协议样本
- 2024隔音设施安装及施工协议样本
- 店铺租赁经营规范协议2024年
- 2024年采购协议模板与协议细则
- 2024年店面房租赁协议样本
- 古希腊文明智慧树知到期末考试答案章节答案2024年复旦大学
- 2024年山东济南地铁招聘笔试参考题库含答案解析
- 医疗护理品管圈QCC成果汇报之提高住院病人健康宣教的知晓率(问题解决型)
- 日照市重点支柱产业情况
- 儿童过敏性休克ppt课件
- 安全生产文明施工措施费用明细报表范文
- 腹腔镜设备的使用和保养PPT课件
- PRTV方案(完整范本)
- 知识产权贯标工作总结
- 窗边的小豆豆.ppt
- 水的电离和溶液的酸碱性pH的应用与计算
评论
0/150
提交评论