二维数组的元素地址;
二维数组指针指向的是首元素的地址(也是首元素数组的首歌元素地址)
指针加n是二维数组第n+1个元素的地址
*(指针+n)+n是二维数组第n+1个元素(元素是一个数组)的第N+!个元素的地址
*(指针+n)等同于array[n]而array[n]
相当于(array[n])[n]
其中array[n]+n就是(array[n])[n]的地址
指向二维数组的指针
int (*p)[3];p是指向长度为3个Int值的数组指针(给个都有三个元素都是int类型的值)
1 #include<stdio.h>
4 int zippo[4][2]={{2,4},{6,8},{1,3},{5,7}};
5 /* {2,3}(zippo)
6 * {6,8}(zippo+1)
7 * {1,3}(zippo+2)
7 * {1,3}(zippo+2)
8 * {5,7}(zippo+3)
9 * 2(zippo) 4(*(zippo)+1)
10 * 6(zippo+1) 8(*(zippo+1)+1)
11 * 1(zippo+2) 3(*(zippo+2)+1)
12 * 5 7
13 *
14 *
15 *
16 *
17 *
18 * */
19 printf(" zippo =%p,zippo+1=%p\n",zippo,zippo+1);
20
21 printf("zippo[0]=%p,zippo[0]+1=%p\n",zippo[0],zippo[0]+1 );
22 printf(" *zippo=%p,*zippo+1=%p\n",*zippo,*zippo+1);
23 printf("zippo[0][0]=%d\n",zippo[0][0]);
24 printf(" *zippo[0]=%d\n",*zippo[0]);
25 printf(" **zippo=%d\n",**zippo);
26 printf(" zippo[2][1]=%d\n",zippo[2][1]);
27 printf(" *(*(zippo+2)+1)=%d\n",*(*(zippo+2)+1));
28 printf("%d\n",**(zippo+2));
29 return 0;
30 }