第4章 数组
第4章 数组
4.1 一维数组
4.2 二维数组
4.3 字符数组和字符串
4.4 典型例题精讲
第4章 数组
4.1 一维数组
4.1.1 一维数组的定义
数组元素可以有多个下标,下标的个数表示数组的维
数,只有一个下标时表示该数组为一维数组。数组的使用也
必须遵循“先定义,后使用”这一原则。一维数组定义的一般
形式如下:
类型标识符 数组名[常量表达式];
第4章 数组
数组定义包含以下几个要点:
(1) 类型标识符用来指明数组元素的类型,同一数组的
元素其类型相同;类型标识符可以是任意一种基本数据类型
或者构造数据类型。
(2) 数组名的命名规则与普通变量相同,但不得与其他
变量或数组同名;数组名表示该数组在内存中存放的首地址,
是一个地址常量。
(3) 方括号“[ ]”是数组的标志,方括号中的常量表达式表
示数组的元素个数,即数组的长度(大小) 。
(4) 常量表达式是整型常量、符号常量及由它们组成的
表达式,但不允许出现变量。
第4章 数组
例如:
int a[5];
在此,数组a共有5个元素:a[0]、a[1]、a[2]、a[3]和a[4] ,
且每个元素都是整型的。特别要注意的是,数组元素的下标
从0开始,直至数组元素的个数减1,数组a的内存分配示意
见图4-1 ,从图中可以看到:数组名a实际上就是数组元素a[0]
的地址。C语言的编译器不对数组的越界问题进行检查,直
到运行时才给出出错信息,这一点要特别注意。
第4章 数组
图4-1 int a[5] 的内存分配示意
第4章 数组
例4.1 指出下面的数组定义中哪些是正确的,哪些是错
误的。
int x[40],y[20],z(10);
float b[7.5],s[8];
int m;
char m[15],ch[m];
第4章 数组
[解] 对本题的数组定义说明如下:
(1) 对“int x[40],y[20],z(10);” ,其中数组x 、y 的定义是正
确的,而数组z 的定义有错,因为数组的标志是方括号“[ ]” ,
而不是圆括号“( )” 。
(2) 对“float b[7.5],s[8];” ,其中数组s定义是正确的,而数
组b 因其表示数组元素个数的常量表达式是一浮点型常量,
而不是整型常量,因此出错。
(3) 对“char m[15],ch[m];” ,数组m 因为与整型变量m 同名
而出错,数组ch 的常量表达式是一变量m ,而不是常量,因
此出错。
第4章 数组
4.1.2 一维数组的引用和初始化
数组必须先定义、后使用,并且只能逐个引用数组元素
而不能一次引用整个数组。数组元素的引用格式为:
数组名[下标]
其中,方括号“[ ]” 中的下标只能是整型常量或整型表达
式。例如:
a[5]
b[i+2*j]