第4章数组和字符串_第1页
第4章数组和字符串_第2页
第4章数组和字符串_第3页
第4章数组和字符串_第4页
第4章数组和字符串_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

.,第4章数组和字符串,到目前为止,我们已经了解C+中所有重要的基本数据类型,以及如何在程序中执行计算和判断。本章将讨论两个比较复杂的数据类型:数组和字符串。数组及其使用方法各种类型的数据多维数据的使用C+字符串与C语符串C+/CLI的数组与字符串,.,4.1数组概述,在前面介绍了如何声明和初始化基本类型的变量。每个变量都可以存储特定类型的一个数据项在整型变量中可以存放整数,在字符变量中可以字符等。而数组可以存储相同类型的多个数据项,如整型数组可以存储多个整数。实际上,数组可以存储任何类型的数据。,.,4.1.1定义数组,数组是由多个内存空间组成,每个内存空间都可以存储相同类型的一个数据项,所有的数据项都通过相同的变量名来引用。在C+中定义数组一般形式为:类型名数组名常量表达式;其中,类型名可以是任一种基本数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。,.,4.1.2引用数组元素,为了引用数组中各个数据项,需要使用一个整数标识各个数据项,该整数通常称为数组的索引。数组的索引表示数组元素到数组开始位置的偏移量。第1个数组元素的偏移量是0,因此该元素对应的索引值就是0,第2个数组元素的偏移量是1,它对应的索引值就是1,依次类推。要引用数组中某元素时,可以在数组名后面的方括号中放置该元素对应的索引值。如要将数组a中的第4个元素设置为12,可以使用下面的语句:a3=12;数组的内存排列如右图所示。,.,4.1.3初始化,在定义数组时如果没有为数组指定初始值,则数组的各个存储单元中会包含一此无用的乱码。在定义数据时可以对其进行初始化,使其包含程序中马上能使用的值。对数组进行初始化时,应该在大括号中提供各个数组元素的初始值。初始化数组时,不能指定比数组元素个数还多的初始化值,但可以指定比数组元素个数少的初始化值。没有提供初始值的数组元素将被初化为0,这与未提供初始化列表的情况不同。,.,4.2多维数据,前面介绍的数组都只需要一个索引值来选择元素,这种数组称为一维数组。也可以声明需要两个或更多索引值才能访问元素的数组,这种数组一般称为多维数组。需要两个索引值来引用元素的数组称为二维数组,需要三个索引值的数组称为三维数组,依此类推。,.,4.2.1多维数组的定义,在程序中,为了存储这类数据,就需要定义二维数组。二维数组定义的一般形式为:类型说明符数组名常量表达式1常量表达式2例如:inta34;这条语句定义了一个二维数组a,第一个索引值是行号,第二个索引值是行内的编号。对于C+中的二维数组,可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组。,.,4.2.2多维数组的初始化,为了初始化多维数组,需要扩展原来初始化一维数组的方法。由于二维数组是两个一维数组,这样对二维数组的实始化就变成对两个一维数组进行实始化。根据这种方法,用下面的语句可以定义并实始化二维数组:inta34=80,75,92,69,/第一行61,65,71,75,/第二行59,63,70,68/第三行;因为第一行都是一个一维数组,所以每行的初始化值都包含在一对大括号中。这3个初始化列表本身也包含在一对大括号中,因为二维数组是一维数组的一维数组。可以将这个规则扩展到任意维数的数组,每增加一维,就需要添加一对大括号包含初始值。,.,4.3数组的应用,排序,倒置矩阵,.,4.3.1排序,在实际的应用时,经常会需要对数据进行排序。排序的方法有很多种,常见的包括:冒泡排序法和选择排序法。,1冒泡排序法,2选择排序法,.,4.3.2倒置矩阵,矩阵常用二维数组来表示。倒置矩阵也就是将一个二维数组的行和列元素互换,存储在另一个二维数据中。在进行矩阵倒置时,只需要注意各元素的行和列的索引值变化:原矩阵中的第1个元素的坐标位置没有发生变化;原矩阵第2个元素的行号和列号为(0,1),倒置后变为(1,0);原矩阵第3个元素的行号和列号为(0,2),倒置后变为(2,0),.。,.,4.4字符数组和字符串,char类型的数组可以用于存储非空(C语言标准)的字符串。在C+中,还定义了string类型,该类型比C语言标准的字符串更易于使用。,.,4.4.1字符数组,char类型的数组有两个含义:它可以是一个字符数组,每个元素存储一个字符;它也可以表示一个字符串。在后一种情况中,字符串中的每个字符存储在一个数组元素中,字符串的结尾用一个特定的字符0表示结束。,.,4.4.2string字符串,事实上,string类型是一个类定义。由于目前为止还没介绍过类,所以这里可以理解为类是一种新的数据类型,类数据类型与基本数据类型并没有区别。在使有基本数据类型时,需要使用该基本类型的变量。同样,在使用类类型时,也必须使用类的变量,只是类的变量一般称为对象。string类型在头文件中定义,所以在使用string对象时总是要包含这个头文件。string类型的名称也是在std命名空间中定义。,.,4.4.3使用string字符串,1连接字符串,2访问字符串中的字符,3访问子字符串,4比较字符串,5搜索字符串,6修改字符串,.,4.4.4Unicode字符串,如果字符串需要包含wchar_t类型的字符,而不是char类型的字符,则可以使用头文件中定义的wstring类型。wstring类型的对象与string类型的对象相同。例如,下面的语句定义了一人Unicode字符串的对象:std:wstringwphrase;Unicode字符串值需要在双引号前添加一个前缀L,将宽字符集与单字符集表示的字符串区分开来。因此,为wstring类型的对象赋值时应采用下面的语句:wphrase=L世上无难事,只怕有心人。;要输出Unicode字符串时,必须使用wcout流,并且在输出中文时,需要设置系统的使用的字符集为locale(chs)。,.,4.5C+/CLI的应用,CLR数组,CLR字符串,.,4.5.1CLR数组,1一维CLR数组CLR数组必须使用关键字array指定数组的类型,还必须在array关键字后面的尖括号中指定数组元素的类型。,2多维CLR数组CLR多维数组的最大维数为32。在声明多维CLR数组时,需要在尖括号内指定元素的类型后,再指定数组的维数。数组的维数默认为1,因此在声明一维数组时不需要指定维数。,.,4.5.2CLR字符串,CLR字符串是由System命名空间中定义的String类表示。String类存储的字符串中各个字符是由System:Char类表示。可以使用类似下面的语句创建表示字符串的String对象:S

温馨提示

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

评论

0/150

提交评论