资源描述:
《(计算机基础与C语言程序设计)第6章数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章数组6.1一维数组6.2二维数组6.3字符数组和字符串数组是一种构造型的数据类型,所谓构造型数据类型,是根据已定义的一个或多个数据类型,用构造的方法来定义的一种数据类型。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个数组中有多个元素(或者称为成员),而每个数组中的元素是同一种数据类型,这些元素在内存中占用一块连续的存储区域,并且每个元素占用相同大小的内存空间。数组中的元素可以通过下标进行访问。在程序设计语言中,数组是一种非常重要的数据结构,许多问题通过抽象,可以用这种数据结构来表示数据。数组与我们后面
2、章节中要介绍的指针有密切的关系。本章主要介绍一维数组和二维数组的定义、数组元素的引用以及数组的应用。6.1.1一维数组的定义一维数组是指数组中每个元素只带有一个下标。在C语言中,定义一维数组的语法形式为 类型名数组名[常量表达式],……; 方括号中的常量表达式称为数组的下标。例如:intdat[5],dat1[6];charname[7];6.1一维数组都是一维数组的合法定义形式。第一种定义形式定义了两个一维数组,数组名分别为dat和dat1,dat含有5个整型元素,dat1含有6个整型元素;第二种定义形式定义了一个含
3、有7个字符型元素的数组,数组名为name。 数组一旦被定义,编译系统将为该数组在内存中分配一定的连续存储空间,用来存放数组元素;空间的大小与数组的下标以及数组元素的类型有关。例如,dat数组在内存中占用的存储空间如图6-1所示。数组的下标从0(称为数组下标下界)开始,如dat[5]是由data[0]、dat[1]、dat[2]、dat[3]、dat[4]这5个元素组成的,我们看到dat数组中最后一个元素的下标是4(注意不是5!),4称为数组下标的上界。图6-1dat数组在内存中占用的存储空间6.1.2一维数组的初始化定义数
4、组,虽然在内存占用了一块连续空间,但内存中存放什么还不确定,可以采用如下形式给数组元素赋初值,即初始化:intdat[5]={0,2,3,5,7}; 在dat数组的定义中,其中,赋值号右边用花扩号{}括起来的部分称为初值表。将{}内的数值分别对应地赋给数组元素dat[0]~dat[4],即dat[0]←0dat[1]←2dat[2]←3dat[3]←5dat[4]←7C语言规定,当初值表中的元素个数少于数组元素个数时,多余的数组元素被赋予零值,但不允许初值表中数值个数大于数组元素个数;另外,初值表中的数值可以缺省,但以逗号
5、分隔的除了最后一个可缺省外,其余的不可缺省,缺省的数值为零,如:intdata[5]={3,5};正确。intdata[5]={3,5,};正确。intdata[5]={,,3,,5};错误。intdata1[5]={9};正确。 初始化结果是:data[0],data[1],data[2],data[3],data[4]的初始值分别为3,5,0,0,0。data1[0],data1[2],data1[3],data1[4]的初值分别为9,0,0,0,0。再如:charc[5]={'a'}; 初始化结果是:c[0],c
6、[1],c[2],c[3],c[4]的初值分别为字符'a',' ',' ',' ',' '。数组初始化时,下标[]中的数字可以省略,即不指明元素的个数,这时元素的个数通过初值表中元素的个数来决定。如:intb[]={1,2,3,4,5,6}; 数组b有6个int型的元素,其等价于:intb[6]={1,2,3,4,5,6}; 数组也可以先定义,然后分别对每个元素赋值。例如:intb[6];b[0]=1;b[1]=2;b[2]=3;b[3]=4;b[4]=5;b[5]=6;通过赋值后,等价于:intb[6]={1
7、,2,3,4,5,6};b[6]={1,2,3,4,5,6};6.1.3一维数组的引用定义了数组,在程序中如何使用呢?对一维数组的引用形式如下: 数组名[下标表达式]例如,定义如下数组:inta[8]; 则a[0]、a[j]、a[j+k]都是对数组a中的元素的合法引用形式,其中0、j、j+k称为下标表达式,要求下标表达式的值不能超出数组下标的下界和上界规定的范围。本例中数组a的下标范围是0~7。下标表达式的值必须是整数,下标的下界为0。C语言程序运行过程中,对数组元素的访问如果越界,程序运行时会产生不可预知的错误,系统
8、并不自动检验引用数组元素的下标是否越界,因此需要程序员在程序中自己判别,避免这种错误发生。 数组中的元素只能单个地引用,如a[2]表示数组a中的第3个元素(a[0]是第一个),不能用a代表a中所有的8个元素。在C语言中,数组名是一个常量指针,用于存放整个数组的起始地址,也