Chinaunix首页 | 论坛 | 博客
  • 博客访问: 460997
  • 博文数量: 155
  • 博客积分: 786
  • 博客等级: 军士长
  • 技术积分: 1561
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-01 23:37
个人简介

在路上

文章分类

全部博文(155)

文章存档

2016年(2)

2015年(36)

2014年(45)

2013年(34)

2012年(38)

我的朋友

分类: C/C++

2013-07-17 16:54:29

把二维数组 a 分解为一维数组 a[0],a[1],a[2]之后,设 p 为指向二维数组的指针变量。
可定义为:  int (*p)[4]
        它表示 p 是一个指针变量,它指向包含 4 个元素的一维数组。若指向第一个一维数组a[0],其值等于 a,a[0],或&a[0][0]等。而 p+i 则指向一维数组 a[i]。从前面的分析可得出*(p+i)+j是二维数组 i 行j 列的元素的地址,而*(*(p+i)+j)则是i行 j 列元素的值。
二维数组指针变量说明的一般形式为:
        类型说明符  (*指针变量名)[长度]
        其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。应注意“(*指针变量名)”两边的括号不可少,如缺少括号则表示是指针数组(本章后面介绍),意义就完全不同了。
        

点击(此处)折叠或打开

  1. init main()
  2. {
  3.     int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
  4.     int(*p)[4];
  5.     int i,j;
  6.     p=a;
  7.     for(i=0;i<3;i++)
  8.     {
  9.           for(j=0;j<4;j++)
  10.           printf("%2d ",*(*(p+i)+j));
  11.           printf("\n");
  12.      }
  13. }

阅读(479) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~