首页 > 代码库 > 多维数组的遍历

多维数组的遍历

在C语言中,只存在“一维数组”,这是对于C编译器而言。在C语言的语法规则中,毋庸置疑,是可以使用多维数组的。

1.一维数组的遍历:

可以定义如下一维数组并初始化:

                int arr[10]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a};

我们可以使用数组名(arr)和下标(0-9)来引用数组中的元素:比如,arr[0]和arr[1]就表示内存值0x01和0x02。实际上0[arr]和1[arr]同样表示内存值0x01和0x02,尽管这种引用数组元素的方式比较少见,却是合法的。

原 因在于C编译器在处理数组元素时,是通过指针的方式来引用,即arr[0]被编译器转换为*(arr+0),arr[1]被转换为*(arr+1);同样 的处理方式,0[arr]和1[arr]被编译器转换为*(0+arr)和*(1+arr).显然,因为加法交换律的保证,*(arr+0)与* (0+arr)是相同的表达式,而*(arr+1)与*(1+arr)也是相同的表达式。

于是,遍历一维数组有可以如下2种方式:

方式(1):

int cnt;

int arr[10]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a};

for(cnt=0;cnt<10;cnt++)

{

  printf("%d\n",arr[cnt]);

}

 

方式(2):

int *parr=NULL;

int arr[10]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a};

for(parr=arr;parr<arr+10;parr++)

{

  printf("%d\n",*parr);

}

 

依照上述的方法,可以写出遍历多维数组的方法,以二维数组,三维数组,四维数组为例,来演示具体如何操作。

2.二维数组的遍历

可以定义如下二维数组并初始化:

int arr[3][4]={  0x01,0x02,0x03,0x04,

                       0x05,0x06,0x07,0x08,

                       0x09,0x0a,0x0b,0x0c

                   };

方式(1):

int row,col;

for(row=0;row<3;row++)

  for(col=0;col<4;col++)

      {

        printf("%d\n",arr[row][col]);

      }

方式(2):

int*p1=NULL;

int*p2[4]=NULL;

for(p2=arr[0];p2<arr[0]+4;p2++)

   for(p1=*p2;p1<*p2+3;p1++)

        {

             printf("%d\n",*p1);

        }

多维数组的遍历