Miracle

有梦想就不会觉得苦。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数组指针与二维数组

Posted on 2011-05-23 16:33  gsky  阅读(168)  评论(0编辑  收藏  举报
#include<stdio.h>
int main()
{
 int a[5][5]={1,3,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
 int (*p)[5];   //p是一个数组指针,它指向一个数组,这个数组里面有5个元素。
 p=a;       // p是指向a[0][5]这个小数组的首地址,不是指向a[0][0]这个元素的首地址,所以p+1表示a[1][5]这个小数组的首地址
 printf("%d\n",**(p+1));         // 6
 printf("%d\n",*(*p+1));         // 3   
 printf("%d\n",**p+1);           // 2 **p是a[0][0]  
 printf("%d\n",(*p)[1]);         // 3 第一个数组里面的第二个元素
 printf("%d\n",*p[1]);           // 6 []的优先级比*高
 printf("%d\n",*p);              // *p是1的地址,**p才是1.
 return 0;
}