数组和风格字符串

上传人:宝路 文档编号:47848344 上传时间:2018-07-05 格式:PPT 页数:20 大小:217.83KB
返回 下载 相关 举报
数组和风格字符串_第1页
第1页 / 共20页
数组和风格字符串_第2页
第2页 / 共20页
数组和风格字符串_第3页
第3页 / 共20页
数组和风格字符串_第4页
第4页 / 共20页
数组和风格字符串_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数组和风格字符串》由会员分享,可在线阅读,更多相关《数组和风格字符串(20页珍藏版)》请在金锄头文库上搜索。

1、第3章 数组和C 风格字符串 由除了前面介绍的基本数据类型外,C+还提供了 复合数据类型以解决相对复杂的问题,这些数据 类型是基于基本的整型、浮点型、char型和bool 型等创建的,本章将介绍数组的相关知识很使用 方法,以及数组与C风格字符串的关系。3.1 什么是数组将固定数目的同类型数据有序地组合在一起,在内存中连 续排列,并用同一个名字来标识,这样一个结构称为数组 。数组有以下几个特征: 用一个名字命名一组数据。 这组数据类型相同。 这组数据的数目是确定的。 每个数据称为数组的元素,每个元素在数组中有一个位置 ,即该元素在数组中的顺序关系,元素在内存中是连续排 列的,换言之,数组占有一片

2、连续的内存空间。 程序依靠元素在数组中的位置信息对元素进行访问,即数 组名加下标的形式。 和基本数据类型一样,要使用一个数组,必须先对其进行 声明,声明的格式为: 类型 数组名N1, N2, Nn;3.2 维数组 一维数组也称向量,用以组织具有一维顺序关系 的一组同类型数据,如某个班级所有人的成绩信 息,和基本数据类型一样,在使用数组前必须先 对其进行声明。3.2.1 一维数组的声明 一维数组的声明形式为: 类型 数组名N1; 其中,N1必须是个整型常量,如5、10或const整 型量。假定班级里有10个人,可以用下列形式声 明一个数组以存储每个人的成绩: int age10; 这样,编译器将

3、一次性开辟10个存放int型数据的 连续内存空间,省却了声明10个int变量的麻烦, 采用一维数组存储用户输入的10个数据,很显然 ,用一维数组处理具有顺序关系的数据比用简单 变量要方便得多。3.2.2 初始化一维数组代码3-1通过用户输入数据对数组中的运算进行赋值,其实,在声 明一个数组的同时也可以对各元素进行初始化,初始化表达式按 元素的顺序依次写在一对花括号中,元素中间用逗号隔开,代码3 -2与代码3-1是等价的。3.2.3 一维数组应用举例对数组中的元素进行处理,最有效的途径就是使用循环结构,前 面的代码示例中已经粗略地体现了如何访问数组元素,下面的例 子用以寻找数组中元素的最大值和最

4、小值,见代码33 。3.2.4 数组操作注意事项C+不允许对数组进行整体操作,像数组比较,数组数据的输入输 出等,必须通过逐一访问数组元素来完成,下列一些用法是不合 法的:3.3 C 风格字符串 在第2章中已经介绍了字符串常量的知识,C语言 中的字符串是用一维字符型数组来实现,编译器 把每个字符串理解为一个以0(空字符, null character)为结束符的一维字符数组,这 种类型的字符数组常被称为C风格字符串,C+语 言借鉴了这一用法。3.3.1 C 风格字符串的声明声明一个C风格字符串,使其内容为“I Love C+!”,代码如 下: char str=I, ,L,o,v,e, ,C,

5、+,+,!,0; 上述代码在声明数组时没有指定大小,这样,编译器就会自行 计算决定数组的大小。对于C风格字符串的声明,推荐采用这 种方式,免去了程序员自行计数的麻烦,如果由程序员指定的 数组太小,编译器会报错,太大的话就浪费空间。但若在声明 语句中无初始化表达式,则应该指出该字符数组的大小。 可以看出,存储一个字符串所需字节数比该串的字符数多1, 如存储“Hello”,该串有5个字母,但C风格字符串需要6个字 节。而且,上述声明方式看上去很麻烦,要一个字母一个字母 地用单引号包裹起来,还要记着后面的0,实际上,C+ 还提供了另一种声明C风格字符串的方法使用字符串常量 ,如: char str=

6、”I Love C+!”;3.3.2 字符数组的cin和cout仅仅由字符组成,但结尾不是0的数组不是C风格字符串,如: char str=H,e,l,l,o; 如此声明的str只能称为字符数组,空字符0对C风格字符串十分重要,很多与之 对应的处理函数和对象(包括cout和cin),都逐个处理C风格字符串的字符,直到遇 到空字符为止,因此,对于“char str=H,e,l,l,o;”, cout在输出5个字符后,还会继续输出内存中后面字节的内容,直到遇到空字符为止 ,这时输出结果是不确定的,但由于内存中存在大量的空字节,所以这个过程应该可 以很快停止。 可以将C风格字符串(甚至是普通的字符数

7、组)当成一个整体来进行输入输出操作, 见代码34。 3.3.3 get()函数和getline()函数那么如何将含空格的字符串读到C风格字符串中呢?这要用到istream类中 提供的getline()和get()函数,两个函数都用于读入一行输入,直到遇到 换行符,但getline()函数丢弃换行符,而get()函数也将换行符存入C风 格字符串中,关于istream类的详细介绍请参考第14章,这里先介绍两个 函数的用法,见代码35。3.3.4 cin与get()/getline()函数的搭配问题在cin和get()/getline()函数搭配使用时,常常会出现问题,见 代码36 。3.3.5 访

8、问C风格字符串中的某个元素C风格字符串是一类特殊的字符数组(最后一个元素是空字 符0),可以通过“数组名下标索引”的方式对某 个元素(即字符串中的某个字符)进行访问和读写,见代 码37。3.3.6 C风格字符串处理函数 作为一种特殊类型的字符数组,C风格字符串可以 使用cout和cin作整体的输入输出,但是,其他整 体操作,如赋值、比较和连接等都是不允许的, 如: char x10,y10=”ABCDEFGHI”; x=”123456789”; /错误 x=y;/错误 if(x A01- A02- A03- A10- A11- A12- A13- A20- A21- A22- A23 多维数组

9、的存储方式与此类似,以N维数组为例,内存中先放前N-1维索引都为0的那 些元素,再放前N-2维坐标为0,第N-1维坐标为1的那些元素,下面给出333的三 维数组B中元素在内存中的排列顺序: B000- B001- B002- B010- B011- B012- B020- B021- B022- B100- B101- B102- B110- B111- B112- B120- B121- B122- B200- B201- B202- B210- B211- B212- B220- B221- B222-3.5 小结本章主要介绍了数组与C风格字符串的知识。数组是同类型 变量组成的集合,通过下标运算符可访问数组中特定的元 素。C风格字符串是类特殊的一维字符数组:除存放字符串 中的各个字符外,C风格字符串最后一个字符为空字符“0“ 。除字符数组可以用作整体的输入输出外,数组都不支持 整体的操作,必须从元素的角度对数组进行控制,为了方 便C风格字符串的处理,C+的库函数提供了一些常用处理 函数,这些函数的声明可以在头文件cstring中找到。 数组越界是一个严重的错误,使用数组时一定不能越界, 由于编译器不对程序中出现的数组越界进行检查,所以, 最好在使用时,对数组是否越界进行检查。

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

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号