1. 程式人生 > >C語言-----二維陣列

C語言-----二維陣列

二維陣列的建立,初始化,使用。

(一)二維陣列的建立

二維陣列定義的一般形式:型別說明符 陣列名[常量表達式][常量表達式]

舉例如下:

 int a[3][4];

 //定義a為 3*4(3行4列) 的陣列。

二位陣列又可以看作是一種特殊的一維陣列:它的元素又是一個一維陣列。

舉例如下:

 int a[3][4];
 //可以看作a是一個一維陣列,它有3個元素:a[0],a[1],a[2]。
 //每個元素又是一個包含四個元素的一維陣列。此時a[0],a[1],a[2]做一維陣列名。
 //a[0]——a[0][0],a[0][1],a[0][2],a[0][3]
 //a[1]——a[1][0],a[1][1],a[1][2],a[1][3]
 //a[2]——a[2][0],a[2][1],a[2][2],a[2][3]

二維陣列中元素在記憶體中是連續存放的,元素的排列順序是按行排放的,即izai記憶體中先存放第一行的元素,緊接著存放第二行的元素,以此類推…是線性的,不是二維的。

(二)二維陣列的初始化

 int a[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
 int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
    //這兩行程式碼等價
    //結果為:1   2   3   4 
    //       5   6   7   8
    //       9  10  11  12     
    //第1行程式碼是分行給二位陣列賦值。
    //2行程式碼是將所有資料寫在花括號內,按陣列元素在記憶體中的排列順序對各元素賦值。


  int a[3][4] = { { 1 }, { 2 }, { 3 } };
     //對部分元素賦值。
     //結果為:1   0   0   0
    //        2   0   0   0
    //        3   0   0   0


 int a[3][4] = { { 1 }, { 0, 2 }, { 0, 0, 3 } };
    //對每一行中的部分元素賦值
     //結果為:1   0   0   0
    //        0   2   0   0
    //        0   0   3   0


 int a[3][4] = { { 1 }, { 3, 4 } };
    //只對某幾行元素賦初值
     //結果為:1   0   0   0
    //        3   4   0   0
    //        0   0   0   0

注意:在某些情況下行的長度可省略,但是在任何情況下列的長度都不能省略!

  //如果對全部元素都賦初值,則定義陣列時對一維的長度可以不指定。
 //下面兩行程式碼等價。
 int a[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
 int a[ ][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
    //結果為:1   2   3   4 
    //       5   6   7   8
    //       9  10  11  12     
 
 //在定義時也可以只對每行元素都賦初值,此時省略一維的長度。
 int a[ ][4] = { { 1 }, { 2 }, { 3 } };
 //結果為:1   0   0   0
 //       2   0   0   0
 //       3   0   0   0

(三)二維陣列的使用

*二維陣列也是通過訪問的。
*二維陣列大小的計算:


程式碼如下:

int a[3][4] = { 0 };
int sz_i = sizeof(a) / sizeof(a[0]);
int sz_j = sizeof(a[0]) / sizeof(a[0][0]);

二維陣列的舉例:
(1)舉例1

//輸入並列印一個二維陣列

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3][4] = { 0 };
int i, j;
for(i = 0;i < 3;i++)
{
  for(j = 0;j < 4;j++)
  {
     a[i][j] = i+j;
     printf("%d ",a[i][j];
  }
  printf(" \n");
 }
  system("pause");
  return 0;
  }
  

(2)舉例2