二维数组初始化规则
二維數(shù)組初始化的形式為:
數(shù)據(jù)類型 數(shù)組名[整常量表達(dá)式][ 整常量表達(dá)式]={ 初始化數(shù)據(jù) };在{ }中給出各數(shù)組元素的初值,各初值之間用逗號(hào)分開。把{ }中的初值依次賦給各數(shù)組元素。
有如下幾種初始化方式:
int a[2][3]={{1,2,3},{4,5,6}};
在{ }內(nèi)部再用{ }把各行分開,第一對(duì){ }中的初值1,2,3是0行的3個(gè)元素的初值。第二對(duì){ }中的初值4,5,6是1行的3個(gè)元素的初值。相當(dāng)于執(zhí)? ?行如下語句:
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;
注意,初始化的數(shù)據(jù)個(gè)數(shù)不能超過數(shù)組元素的個(gè)數(shù),否則出錯(cuò)。
int a[2][3]={ 1,2,3,4,5,6};
把{ }中的數(shù)據(jù)依次賦給a數(shù)組各元素(按行賦值)。即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個(gè)初值,按順序分別賦給a[0][0]和a[0][1];第二行的初值4賦給a[1][0]。由于存儲(chǔ)類型是static,故其它數(shù)組元素的初值為0
? ? ? ?注:某? ? ? ? ?些C語言系統(tǒng)(如:Turbo C)中,存儲(chǔ)類型不是static的變量或數(shù)組的初值也是0。
static int a[2][3]={ 1,2};只有2個(gè)初值,即a[0][0]=1,a[0][1]=2,其余數(shù)組元素的初值均為0。
⑷ 可以省略第一維的定義,但不能省略第二維的定義。系統(tǒng)根據(jù)初始化的數(shù)據(jù)個(gè)數(shù)和第2維的長(zhǎng)度可以確定第一維的長(zhǎng)度。
int a[ ][3]={ 1,2,3,4,5,6};
a數(shù)組的第一維的定義被省略,初始化數(shù)據(jù)共6個(gè),第二維的長(zhǎng)度為3,即每行3個(gè)數(shù),所以a數(shù)組的第一維是2。
一般,省略第一維的定義時(shí),第一維的大小按如下規(guī)則確定:
初值個(gè)數(shù)能被第二維整除,所得的商就是第一維的大小;若不能整除,則第一維的大小為商再加1。例如,int a[ ][3]={ 1,2,3,4};
? ? ? ? 等價(jià)于:int a[2][3]={ 1,2,3,4};
若分行初始化,也可以省略第一維的定義。下列的數(shù)組定義中有兩對(duì){ },已經(jīng)表示a數(shù)組有兩行。static int a[ ][3]={{1,2},{4}};
總結(jié)
- 上一篇: 成都大熊猫繁育研究基地直通车在哪坐?
- 下一篇: C语言操作符 进阶 (常见错误及细节)