第03章数组与C 风格字符串_第1页
第03章数组与C 风格字符串_第2页
第03章数组与C 风格字符串_第3页
第03章数组与C 风格字符串_第4页
第03章数组与C 风格字符串_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、用以寻找数组中元素的最大值和最小值,见代码3 3 。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,

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

6、e 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、出操作,见代码3 4。 3.3.3 get()函数和getline()函数 那么如何将含空格的字符串读到C风格字符串中呢?这要用到istream类中提供的getline()和get()函数,两个函数都用于读入一行输入,直到遇到换行符,但getline()函数丢弃换行符,而get()函数也将换行符存入C风格字符串中,关于istream类的详细介绍请参考第14章,这里先介绍两个函数的用法,见代码3 5。3.3.4 cin与get()/getline()函数的搭配问题 在cin和get()/getline()函数搭配使用时,常常会出现问题,见代码3 6 。3.3.5 访问C风格字符串中的某个元素 C

8、风格字符串是一类特殊的字符数组(最后一个元素是空字符0),可以通过“数组名下标索引”的方式对某个元素(即字符串中的某个字符)进行访问和读写,见代码3 7。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多维数组的存储方式与此类似,以N维数组为例,

9、内存中先放前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。除字符数组可以用作整体的输入输出外,数组都不支持整体

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论