码迷,mamicode.com
首页 > 编程语言 > 详细

多维数组的遍历

时间:2014-11-06 14:44:06      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:ar   使用   for   sp   bs   nbsp   如何   方法   c语言   

在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);

        }

多维数组的遍历

标签:ar   使用   for   sp   bs   nbsp   如何   方法   c语言   

原文地址:http://www.cnblogs.com/jackyhau/p/4078568.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!