资源描述:
《C程序设计实例教程 教学课件 作者 金林樵第5章 数组与字符串.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、通常,程序运行需要的数据并不都是简单的字符型、整型或浮点型数据,而且为了处理方便,也需要自己构造复杂结构的数据。在C语言中,可以将基本类型数据按一定规则组成数组、结构体或共用体等复杂类型,这里称之为构造数据类型。本章将讨论如何定义和使用数组,以及字符数组和字符串之间的区别和联系。第5章数组与字符串5.1数组概述5.2一维数组5.3二维数组5.4字符数组及字符串函数5.5学生数据的输入与输出5.6习题目录<>5.1数组概述数组是内存中的一块连续存储区,这个存储区用来存贮若干具有相同类型的数据。为了访问数组,需要给存储区取一个名字,称为数组名,该数组
2、名同时也用于表示数组类型,因此数组名也必须符合标识符的相关规定。数组中的每个数据称为数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。由于数组中的数据是连续存储的,为了操作方便,就象门牌号码一样给每个元素编一个号,称为元素的下标。通过数组名及元素的下标可以唯一地确定一个数组元素在数组中的位置。如果数组元素的下标是一维的,则称为一维数组,一维数组可以与数学上的一维矢量对应;如果数组元素的下标是二维的,则称为二维数组,二维数组可以与数学上的矩阵相对应;如果数组
3、元素的下标是多维的,就称为多维数组,多维数组可以想象成几何中的超立方体,超立方体的每个顶点就是一个数组元素。C程序设计实例教程第五章数组与字符串<>5.2一维数组5.2.1一维数组的定义定义一维数组的语法形式为:类型标识符数组名[整型常量表达式];其中:1)数据类型可以是任意一种基本数据类型或构造数据类型。2)数组名是用户定义的数组标识符,用于表示数组的首地址。3)整型常量表达式表示数组元素的个数,也称为数组的长度,其值必须大于0。4)方括号[]表示一个数组维度。一个[]表示一维数组,两个[]表示二维数组,依此类推。例如:inta[5];说明数组
4、a是整型数组,有5个元素。floatb[10];说明数组b是单精度浮点型数组,有10个元素。charc[20];说明数组c是字符数组,有20个元素。在定义数组时要注意以下几点:1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。2)数组名的命名规则必须符合标识符的命名规则,且不能与其它变量名相同。3)方括号中的表达式用于表示数组元素的个数。C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值,因此不能使用变量,必须为符号常量或整型常量。例如以下数组定义是正确的:#defineLen
5、5//定义一个符号常量Leninta[1+5];//定义整型数组a,其包含6个元素intb[Len];//定义字符数组b,其包含5个元素而以下数组定义是错误的:intn=5;intc[n];//定义数组c时使用了变量nC程序设计实例教程第五章数组与字符串<>4)存储数组元素所需的存储单元个数是由数组元素的个数和数据类型的字节数共同决定的。例如:inta[5];表示具有5个元素的整型数组。因为在VSC++.NET中,整型数据需要4个字节的存储单元区,所以存储数组a的所有元素共需要5*4=20个存储单元(即20个字节),其数组元素的存储空间示意图如图
6、5-1所示。图中,1000H至1003H四个字节用于存储第一个整型元素a[0],1004H至1007H四个字节用于存储第二个整型元素a[1],依此类推,1016H至1019H用于存储最后第五个元素a[4]。系统在访问任一个数组元素时会根据该元素在数组中的序号以及数据类型,自动定位到相应的存储单元。一般以如图5-2的形式来表示一维数组的存储。有时在定义数组的时候,希望直接对数组元素进行赋值,此时称为数组的初始化。数组初始化是在编译阶段进行的,这样将减少运行时间,提高效率。C程序设计实例教程第五章数组与字符串图5-1存储单元示意图图5.2一维数组存储
7、示意图<>数组初始化的一般形式为:类型标识符数组名[整型常量表达式]={值1,值2,…,值n};其中在{}中的各数据值即为数组各元素的对应初值,各值之间用逗号间隔。例如:inta[10]={0,1,2,3,4,5,6,7,8,9};相当于a[0]=0,a[1]=1,...,a[9]=9;对数组的初始化有如下几种形式:1)在定义数组时,对所有元素进行赋值,此时数组长度(即[]中的表达式)可以不指定。例如,一般情况下为:inta[10]={0,1,2,3,4,5,6,7,8,9};但也可以写成:inta[]={0,1,2,3,4,5,6,7,8,9}
8、;如果需要对10个长度的整型数组a中的元素都赋值为0,则有两种方式:inta[10]={0};或者inta[]={0,0,0,0,0,0