二維數組的引用
與一維數組一樣,多維數組一般也不能整體操作,整體操作需轉化成對數組的分量下標變量進行。
下標變量的形式為:數組名[下標表達式1][下標表達式2]
多維數組下標變量的形式為:數組名[下標表達式1][下標表達式2]…
[下標表達式n]
例如,對以上定義的acj數組3000個分量分別為:acj[0][O]、acj[1 O][1]、…、acj[O]
[29]、acj[1][O]、acj[1][1]、…、acj[1][29]、…、acj[999][0]、acj[999][1]、…、acj[999]
[29],左邊下標變化最慢,右邊下標變化最快,右邊下標變化一遍,左邊下標才變化一次。
每個分量對應一個學生一門課程的成績,acj—Li][j]相當於一個float型變量。
說明:
(1)每個下標的取值范圍從。到數組長度減1,下標變量同樣相當於基類型變量,中國自學編程網首發。
(2)對於多維數組整體操作的完成需用多重循環,一個下標對應於一重循環控制變量。二維數組的整體操作用兩重循環完成,外重循環對應下標1,內重循環對應下標2。
(3)其它類似於一維數組處理。
二維數組的初始化
二維數組及多維數組的初始化和一維數組類似,只有靜態存儲數組和外部存儲數組,才能在編譯階段初始化。
初始化形式:
存儲類別類型數組名[下標1][下標2]={常量l,常量2,…,常量n);
例如:
static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
a[O][O]=1,aEO][1]=2,a[O][2]=3,a[O][3]=4,
a[1][O]=5,a[1][1]=6,a[1][2]=7,a[1][3]=8,
a[2][O]=9,a[2][1]=10,a[2][2]=11,a[2][3]=12
(1)二維數組的初始化可以分行進行。例如,上面的a數組初始化還可以表示為:
static int a[3][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12));
而定義4行3列的b數組可以表示為:
static int b[4][3]={{1,2,3),{4,5,6},{7,8,9},{10,11,12});
可以只對數組中部分元素初始化。例如:
a[0][o]=1,a[o][1]=2,a[1][o]=5,a[2][o]=9,其它分量初值取默認值,為o。
(3)如果對二維數組中全部元素初始化,則定義數組時第一維的長度可以省略,但第二維的長度不能省略。例如:
static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12);
可以寫成
static int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
但不能寫成
static int a[][]={1,2,3,4,5,6,7,8,9,10,11,12);
因為兩個維數都省略時,可以理解為1*12、12*1、3*4、4*3、2*6、6*2等多種形式,會發生混淆,故只能省略第一個維數。
(4)如果對二維數組按行進行初始化,則定義數組時第一維的長度也可以省略。例如:
static int a[][4]={{1,2},{5},{9});
對於二維數組與多維數組作函數參數跟一維數組作函數參數類同處理,但對形參數組,只有第一維的大小可以省略,第二維及其它高維的大小均不能省略。