9.1 一维数组的定义、初始化和引用 5 D. y1 D( n3 y2 ]4 @9 U
1.一维数组的定义方式为: ' K4 {5 y4 T, E4 c0 _, D
类型说明符 数组名[常量表达式]
: h* C( y: }" i2 @5 } F (1)数组名的命名方法与变量名相同,遵循标识符命名规则;
% p u) Y5 M6 a (2)数组是用方括号括起来的常量表达式,不能用圆括号;
3 w- g$ `1 i2 t H (3)常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量表达式-1; : d, M+ M& B- R4 f* N: C+ a$ w
(4)常量表达式中可以包括常量和符号常量,不能包括变量。
( a1 w( h4 M9 ~+ L# L: w6 J& ~ 可以用赋值语句或输入语句使数组中的元素得到值,但要占用运行时间。可以使数组在运行之前初始化,即在编译阶段使之得到初值。
! J5 Y, ?$ o" @6 I9 C* M 2.对数组初始化可以用以下方法实现:
9 V0 Z4 j( I2 t' I2 v* Y7 d (1)在定义数组时对数组元素赋以初值。如:
8 p* T, Q$ ^* z( M- L: U static int a[10]={0,1,2,3,4,5,6,7,8,9};
* m5 g! \2 x" `" C, n1 k 经过上面的定义和初始化后,a[0]=0,a[1]=1,…,a[9]=9。
5 |9 j! r8 w! L1 S6 [ (2)初始化时可以只对一部分元素赋初值。例如:
7 I( ^& l' B0 F& e* k static int a[10]={0,1,2,3,4};
( H7 F) T* t0 T 定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。 0 L$ e" V! I/ P, }* p* }0 o
(3)如果想使一个数组的元素值全部为0,可以用下面的方法: / u( r( p- i$ M2 H6 c
static int a[10]={0,0,0,0,0,0,0,0,0,0};
: T: D+ C0 b3 l2 @& n# g; Z 不能用:
; k# a' d% w2 u# e. D- ~ static int a[10]={0*10};
+ S1 A1 t* f0 [ 如果对static型数组不赋初值,系统会对定义的所有数组元素自动赋以0值。 , O6 ~3 K! k+ R2 O
(4)在对全部数组元素赋初值时,可以不指定数组长度。
/ G% K S4 h# ] 3.一维数组的引用方法是:
M- j4 O% ?+ V, V# Y, L C语言规定不能一次引用整个数组,引用时只能逐个元素引用,数组元素的表示形式为: 0 x& m5 T4 f# w! P9 U9 S x8 d
数组名[下标]
4 j# ^' ]9 \( \4 ]/ { 下标可以是整型常量或整型表达式。如: 0 `: `, l; D. R6 q% _
a[0]=a[5]+a[7]-a[2*3];
, D: i) O1 }( a b. L3 B7 G0 k9 T; I7 x 9.2 二维数组的定义、初始化和引用
5 R! b5 o6 O9 {8 `. ^% ? 1.二维数组定义的一般形式为 ! t" S3 s- I8 L* }7 u( e
类型说明符 数组名[常量表达式][常量表达式] " x' ]* {# B& h3 j0 Y
C语言采用上述定义方法,我们可以把二维数组看做是一种特殊的一维数组:它的元素又是一维数组。在C语言中,二维数组中元素的排列顺序是:先按行存放,再按列存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。 - F, V1 h+ C) P' k
2.二维数组的初始化:二维数组可以用下面的方法初始化: 8 A/ ^& Q/ H/ ]8 r
(1)分行给二维数组赋初值。如: 0 h* ^- p; M' G$ A# e [5 K2 r
static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; + c& R8 y4 p; R
以上赋值把第一个花括号内的数据赋给第一行元素,第二个花括号内数据赋给第二元素…,即按行赋值。
: |, a7 a5 X7 t3 A q" x# C (2)可以将所有的数据写在一个花括号内,按数组排列的顺序对各元素赋值。
' y% p) g# h; M6 a/ p% d (3)可以对数组的部分元素赋初值。如: ! t/ k1 u) i* O$ h) i) q! I2 V2 z) G
static int a[3][4]={{1},{5},{9}};
: D4 }" g% _+ W 以上赋值的结果是:数组第一列的元素分别赋了初值1,5,9,其余元素的值都是0。
2 u) t& a1 c3 g- w, C) U) Q0 h (4)如果对二维数组的全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。 7 N1 F. W9 X' T0 p; h
3.二维数组的引用:二维数组的元素可以表示为:
' i4 A/ Y. U( z7 a 数组[下标][下标] 在引用二维数组时,必须是单个元素,不能是整个数组名。下标可以是一个表达式,但不能是变量。如果下标是一个表达式,注意表达式的值不能超出数组定义的上、下限。 |