数组指针与二维数组

01 #include<stdio.h>
02 int main()
03 {
04  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};
05  int (*p)[5];   //p是一个数组指针,它指向一个数组,这个数组里面有5个元素。
06  p=a;       // p是指向a[0][5]这个小数组的首地址,不是指向a[0][0]这个元素的首地址,所以p+1表示a[1][5]这个小数组的首地址
07  printf("%d\n",**(p+1));         // 6
08  printf("%d\n",*(*p+1));         // 3   
09  printf("%d\n",**p+1);           // 2 **p是a[0][0]  
10  printf("%d\n",(*p)[1]);         // 3 第一个数组里面的第二个元素
11  printf("%d\n",*p[1]);           // 6 []的优先级比*高
12  printf("%d\n",*p);              // *p是1的地址,**p才是1.
13  return 0;
14 }
posted @ 2011-09-19 09:04  auleaf  阅读(202)  评论(0编辑  收藏  举报