c語言中,二維陣列元素在記憶體中是按行存放的。二維陣列本質上是以陣列作為陣列元素的陣列,即“陣列的陣列”,型別說明符 陣列名[常量表達式][常量表達式]。二維陣列在概念上是二維的,即是說其下標在兩個方向上變化, 下標變數在陣列中的位置也處於一個平面之中, 而不是象一維陣列只是一個向量。但是,實際的硬體儲存器卻是連續編址的, 也就是說儲存器單元是按一維線性排列的。如何在一維儲存器中存放二維陣列,可有兩種方式:一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。在C語言中,二維陣列是按行排列的。例如:float a[3][4],b[5][10]; 定義a為3*4(3行4列)的陣列,b為5*10(5行10列)的陣列。注意,不能寫成 float a[3,4],b[5,10]; 具體可以表示:a[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12} }擴充套件資料:1、表示方法:陣列元素也是一種變數, 其標識方法為陣列名後跟一個下標。下標表示了元素在陣列中的順序號。陣列元素的一般形式為:陣列名[下標] 其中的下標只能為整型常量或整型表示式。如為小數時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的陣列元素。陣列元素通常也稱為下標變數。必須先定義陣列, 才能使用下標變數。2、賦值方法:初始化賦值的一般形式為:static型別說明符陣列名[常量表達式]={值,值……值}; 其中static表示是靜態儲存型別, C語言規定只有靜態儲存陣列和外部儲存陣列才可作初始化賦值。在{ }中的各資料值即為各元素的初值, 各值之間用逗號間隔。例如:static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相當於a[0]=0;a[1]=1...a[9]=9;3、使用規則:一、陣列的型別實際上是指陣列元素的取值型別。對於同一個陣列,其所有元素的資料型別都是相同的。二、陣列名的書寫規則應符合識別符號的書寫規定。三、陣列名不能與其它變數名相同。四、可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。五、只能給元素逐個賦值,不能給陣列整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;(請注意:在C、C#語言中是這樣,但並非在所有涉及陣列的地方都這樣,資料庫是從1開始。)六、若不給可初始化的陣列賦初值,則全部元素均為0值。七、假如給全部元素賦值,則在陣列說明中, 可以不給出陣列元素的個數。例如:static int a[5]={1,2,3,4,5}; 可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程式執行過程中,對陣列作動態賦值。這時可用迴圈語句配合scanf函式逐個對陣列元素賦值。
c語言中,二維陣列元素在記憶體中是按行存放的。二維陣列本質上是以陣列作為陣列元素的陣列,即“陣列的陣列”,型別說明符 陣列名[常量表達式][常量表達式]。二維陣列在概念上是二維的,即是說其下標在兩個方向上變化, 下標變數在陣列中的位置也處於一個平面之中, 而不是象一維陣列只是一個向量。但是,實際的硬體儲存器卻是連續編址的, 也就是說儲存器單元是按一維線性排列的。如何在一維儲存器中存放二維陣列,可有兩種方式:一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。在C語言中,二維陣列是按行排列的。例如:float a[3][4],b[5][10]; 定義a為3*4(3行4列)的陣列,b為5*10(5行10列)的陣列。注意,不能寫成 float a[3,4],b[5,10]; 具體可以表示:a[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12} }擴充套件資料:1、表示方法:陣列元素也是一種變數, 其標識方法為陣列名後跟一個下標。下標表示了元素在陣列中的順序號。陣列元素的一般形式為:陣列名[下標] 其中的下標只能為整型常量或整型表示式。如為小數時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的陣列元素。陣列元素通常也稱為下標變數。必須先定義陣列, 才能使用下標變數。2、賦值方法:初始化賦值的一般形式為:static型別說明符陣列名[常量表達式]={值,值……值}; 其中static表示是靜態儲存型別, C語言規定只有靜態儲存陣列和外部儲存陣列才可作初始化賦值。在{ }中的各資料值即為各元素的初值, 各值之間用逗號間隔。例如:static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相當於a[0]=0;a[1]=1...a[9]=9;3、使用規則:一、陣列的型別實際上是指陣列元素的取值型別。對於同一個陣列,其所有元素的資料型別都是相同的。二、陣列名的書寫規則應符合識別符號的書寫規定。三、陣列名不能與其它變數名相同。四、可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。五、只能給元素逐個賦值,不能給陣列整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;(請注意:在C、C#語言中是這樣,但並非在所有涉及陣列的地方都這樣,資料庫是從1開始。)六、若不給可初始化的陣列賦初值,則全部元素均為0值。七、假如給全部元素賦值,則在陣列說明中, 可以不給出陣列元素的個數。例如:static int a[5]={1,2,3,4,5}; 可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程式執行過程中,對陣列作動態賦值。這時可用迴圈語句配合scanf函式逐個對陣列元素賦值。