9.1 一维数组的定义、初始化和引用 5 z8 M" J6 m @2 b% e
1.一维数组的定义方式为: 4 G2 i0 a" M# o4 v. F8 K9 s
类型说明符 数组名[常量表达式]
) L1 }; T6 `9 w5 j7 O c! f (1)数组名的命名方法与变量名相同,遵循标识符命名规则;
& y* X e" F; l% p, c3 h (2)数组是用方括号括起来的常量表达式,不能用圆括号;
) L& \$ j, l4 t (3)常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量表达式-1; ( _" D# Z3 h" F# F0 c' i! T" u: w
(4)常量表达式中可以包括常量和符号常量,不能包括变量。 2 R' f3 |# z8 S7 v7 q1 A; u L
可以用赋值语句或输入语句使数组中的元素得到值,但要占用运行时间。可以使数组在运行之前初始化,即在编译阶段使之得到初值。
( t: q; X6 I2 l# c9 F: D 2.对数组初始化可以用以下方法实现:
3 ^. R) \+ s8 q2 ~ }$ x. q (1)在定义数组时对数组元素赋以初值。如: ' x6 O. `" v$ G9 y
static int a[10]={0,1,2,3,4,5,6,7,8,9};
+ e1 |, k ^/ D7 O. g4 u* W; s 经过上面的定义和初始化后,a[0]=0,a[1]=1,…,a[9]=9。 , B$ H2 h2 W) q. f
(2)初始化时可以只对一部分元素赋初值。例如: : [! u+ j; t% @" O
static int a[10]={0,1,2,3,4};
4 [ F% Y/ U, B+ r# D, a k 定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。
( Q0 R) W" ]' L, J( X (3)如果想使一个数组的元素值全部为0,可以用下面的方法:
, {* G5 `7 a3 x! { static int a[10]={0,0,0,0,0,0,0,0,0,0}; ( v& B0 o. Q% ?5 V' Z' _
不能用:
: j) `, B. h- a7 k3 k static int a[10]={0*10};
+ N- G$ Z K' _* X 如果对static型数组不赋初值,系统会对定义的所有数组元素自动赋以0值。 # o3 O8 D& \# }) i2 @* G; z
(4)在对全部数组元素赋初值时,可以不指定数组长度。
( H, D& K8 o: c# h' |' B A) ] 3.一维数组的引用方法是:
, p8 n5 \1 R6 E' Q' T, f/ B; X C语言规定不能一次引用整个数组,引用时只能逐个元素引用,数组元素的表示形式为: % o% \; R! ~+ L' p# P4 e- X
数组名[下标]
+ i- v2 z5 L6 N& V) t$ R2 } 下标可以是整型常量或整型表达式。如:
( n! j+ W/ y1 @( I3 { a[0]=a[5]+a[7]-a[2*3];
7 M" k$ _. q4 v3 ~% s 9.2 二维数组的定义、初始化和引用
: \) o8 B. T# r+ X0 Q 1.二维数组定义的一般形式为
6 O7 H0 b4 T: g% O. F5 O 类型说明符 数组名[常量表达式][常量表达式] " H9 t- H* o8 t u
C语言采用上述定义方法,我们可以把二维数组看做是一种特殊的一维数组:它的元素又是一维数组。在C语言中,二维数组中元素的排列顺序是:先按行存放,再按列存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。 1 A# Q6 T0 H5 X
2.二维数组的初始化:二维数组可以用下面的方法初始化: 0 m( k# B& k- d* H
(1)分行给二维数组赋初值。如:
5 g; }; [# F8 w- G! x4 w static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 9 g3 [$ {, l: `
以上赋值把第一个花括号内的数据赋给第一行元素,第二个花括号内数据赋给第二元素…,即按行赋值。
A0 m2 k3 _. Z. c (2)可以将所有的数据写在一个花括号内,按数组排列的顺序对各元素赋值。
% K/ a' ~2 ], n! [: o: N& o (3)可以对数组的部分元素赋初值。如: 1 e. `6 M! w, E! w
static int a[3][4]={{1},{5},{9}};
; V8 m; q: r c 以上赋值的结果是:数组第一列的元素分别赋了初值1,5,9,其余元素的值都是0。 b: F) U$ y6 a$ c* Z) {, d
(4)如果对二维数组的全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。 P) J+ l9 G& ?, Z* C& I- I
3.二维数组的引用:二维数组的元素可以表示为: M0 `3 O4 y% b- Z6 l7 V" r3 W
数组[下标][下标] 在引用二维数组时,必须是单个元素,不能是整个数组名。下标可以是一个表达式,但不能是变量。如果下标是一个表达式,注意表达式的值不能超出数组定义的上、下限。 |