二維數組初始化的形式為:
數據類型 數組名[整常量表達式][ 整常量表達式]={ 初始化數據 };在{ }中給出各數組元素的初值,各初值之間用逗號分開。把{ }中的初值依次賦給各數組元素。
有如下幾種初始化方式:
int a[2][3]={{1,2,3},{4,5,6}};
在{ }內部再用{ }把各行分開,第一對{ }中的初值1,2,3是0行的3個元素的初值。第二對{ }中的初值4,5,6是1行的3個元素的初值。相當于執? ?行如下語句:
int a[2][3];
a[0][0]=1;a[0][1]=2;a[0][2]=3;a[1][0]=4;a[1][1]=5;a[1][2]=6;
注意,初始化的數據個數不能超過數組元素的個數,否則出錯。
int a[2][3]={ 1,2,3,4,5,6};
把{ }中的數據依次賦給a數組各元素(按行賦值)。即a[0][0]=1; a[0][1]=2;a[0][2]=3;a[1][0]=4;a[1][1]=5;a[1][2]=6;
static int a[2][3]={{1,2},{4}};
第一行只有2個初值,按順序分別賦給a[0][0]和a[0][1];第二行的初值4賦給a[1][0]。由于存儲類型是static,故其它數組元素的初值為0
? ? ? ?注:某? ? ? ? ?些C語言系統(如:Turbo C)中,存儲類型不是static的變量或數組的初值也是0。
static int a[2][3]={ 1,2};只有2個初值,即a[0][0]=1,a[0][1]=2,其余數組元素的初值均為0。
⑷ 可以省略第一維的定義,但不能省略第二維的定義。系統根據初始化的數據個數和第2維的長度可以確定第一維的長度。
int a[ ][3]={ 1,2,3,4,5,6};
a數組的第一維的定義被省略,初始化數據共6個,第二維的長度為3,即每行3個數,所以a數組的第一維是2。
一般,省略第一維的定義時,第一維的大小按如下規則確定:
初值個數能被第二維整除,所得的商就是第一維的大小;若不能整除,則第一維的大小為商再加1。例如,int a[ ][3]={ 1,2,3,4};
? ? ? ? 等價于:int a[2][3]={ 1,2,3,4};
若分行初始化,也可以省略第一維的定義。下列的數組定義中有兩對{ },已經表示a數組有兩行。static int a[ ][3]={{1,2},{4}};