第六章 数组(最终版)
- 格式:ppt
- 大小:790.00 KB
- 文档页数:69
C++程序设计第6章数组单个变量只能存放一个数据值。
当程序中要处理一组相同类型、彼此相关的一组数据时,单个变量就不适合了,就需要一种特殊的数据结构来处理,这就是数组。
数组(array)是一种派生类型。
一个数组能同时存放多个数据值,并能对每个数据进行访问。
本章将介绍一维数组、二维数组和字符数组的定义及使用。
6.1 一维数组一个数组(array)是由相同类型的一组变量组成的一个有序集合。
数组中的每个变量称为一个元素(element),所有元素共用一个变量名,就是数组的名字。
数组中的每个元素都有一个序号,称为下标(index)。
访问一个元素就可以用数组名加下标来实现。
数组必须先定义后使用。
6.1.1 一维数组的定义一维数组就是具有一个下标的数组。
定义一个数组有3个要素:类型、名称与大小。
语法格式为:<数据类型> <数组名> [<常量表达式>]其中,<数据类型>确定了该数组的元素的类型,可以是一种基本数据类型,也可以是已定义的某种数据类型。
<数组名>是一个标识符,作为数组变量的名字。
方括号中的<常量表达式>必须是一个正整型数据,其值为元素的个数,即数组的大小或长度。
注意这里的方括号[]表示数组,而不是表示可缺省内容。
例如,下面定义了三个不同类型的数组:int a[5]; //定义了一个int数组afloat b[20]; //定义了一个float数组bdouble c[5]; //定义了一个double数组c对于上面数组a,元素类型为int,a是数组名,方括号中的10表示数组的长度,即该数组包含了5个元素,分别是a[0]、a[1]、a[2]、a[3]、a[4]。
如果一个数组有n个元素,那么数组中元素的下标从0开始到n-1。
具有相同类型的数组可以在一条说明语句中定义。
例如:int a1[5], a2[4]; //同时定义两个整型数组具有相同类型的单个变量和数组也可以在一条语句中定义。
第6章数组6.1怎样定义和引用一维数组6.1.1怎样定义一维数组一般格式:类型数组名[常量表达式]; 如: int a[10];说明:(1) 数组名的命名规则遵循C 语言的标识符;(2) 常量表达式,用来指定该数组中元素的个数,也就是该数组的长度。
该长度必须在这里是一个常量表达式(数字常量、符号常量) ,不能是变量。
由 于前面已经指定了类型,指定了元素个数后,该数组一共占用的空间大小就确定 了,^口:上例,a 是int 型,每个int 型在VC 中占4字节,而后面又定义了 10 个元素,所以,a 共占用了 4*10=40个字节的空间;(3) 可以使用sizeof 运算来求出某个数组占用了多少空间; 特别强调,其中常量表达式不能是变量,如:int n=10;int a[n];//错误,因为n 是变量 #defi ne N 10 int b[N]; //正确,因为N 是符号常量 int c[N+3]; //正确的,因为N+3是常量表达式对于以下定义: int a[10];那么,系统就会在内存中划出一片存储空间,女口 右图:显然,每个元素在内存中都是连续的,从而可以 根据上一个元素的地址,来计算出下一个元素的地址, 假设a 的第0个元素存在1000地址上,那么,a[5]的 地址:Add (a[0])+5*4=1020。
而对 a[i]的地址:Add (a[i])=Add (a[0]+i*4)(4) 数组定义后,元素的排列是从a[0]开始的,因此定义的int a[10] 中, 只有a[0]~a[9],并不存在a[10]这个元素。
(5) 数组定义后,其中的每个元素的值都是不确定的(就是不知道值为多 少,也可以说是随机的),如果想要在定义时就有初值,可以有两种方法:方法一:用static 来修饰,那么,该数组中的每个元素都会被初始化为 0: static int b[10]; //数组b 中的10个元素每个值都是010001004 100810201036int a[10]; //数组a中的10个元素值不确定方法二:在定义时,同时给出值,如:int c[10]={1,2,3}; // 给出了3 个值如果所给的值比数组元素少,那么后面的每个元素都会自动初始化成0,如上面的 c 数组,后面的c[3]~c[9] 都是0(6)前面第 4 点说了,定义的a[10] 的元素是从a[0]~a[9] ,没有a[10] 这个元素,如果在程序中引用了a[10],实际上是一种“越界错误”,但是在VC中,一般还发现不了。