1 #include<stdio.h>
2 #define debug 0
3 int main()
4 {
5 int a[3][4]={{8,2,6,4},{1,4,7,9}},i,j;
6 #if debug
7 a++;
8 a[0]++;
9 a[1]++;
10 a[2]++;
11 a[3]++;
12 #endif
13 printf("a:%p a+1:%p\n\n",a,a+1);//相差16字节
14
15 printf("a[0]:%p a[0]+1:%p &a[0][1]=%p\n",a[0],a[0]+1,&a[0][1]);
16 printf("a[1]:%p a[1]+1:%p &a[1][1]=%p\n",a[1],a[1]+1,&a[1][1]);
17 printf("a[2]:%p a[2]+1:%p &a[2][1]=%p\n",a[2],a[2]+1,&a[2][1]);
18 printf("a[3]:%p a[3]+1:%p &a[3][1]=%p\n",a[3],a[3]+1,&a[3][1]);
19 return 0;
20 }//a[0] ,a[1],a[2],a[3]是一维数组名,代表一维数组的起始地址,是地址常量
21 //a+1和a的地址差16个字节,相当于四个元素,a代表第一行的地址,a+1代表第二行的地址。
22 /*a[0]+1和a[0]的地址差4个字节,相当于1个数组元素。因此a[0]+1相当于元素a[0][1]的地址
23 a[1]+1=&a[1][1],a[2]+1=&a[2][1] */
![](https://images2015.cnblogs.com/blog/884179/201605/884179-20160524170847006-113838950.png)