1 #include<stdio.h> 2 int main(){ 3 int a[3][4]={{0,1,2},{3,4,5},{6,7,8}}; 4 printf("%d\n",&a[0][0]); 5 printf("%d\n",*a); 6 printf("%d\n",&a[1][0]); 7 printf("%d\n",a[0]+1); 8 printf("%d\n",a+1); 9 }
a 与 a[0]的地址值都相同但 a+1 与 a[0]+1 的值却并不相同;*a 的值等于 a 的值,而 a 代表的是二维数组的首地址,*a代表的是第一行元素的首地址,**a才是a[0][0]的值;换言之就是*a表示a[0],**a表示a[0][0];所以说a+1表示的是第二行元素的首地址而*a+1表示第一行第二个元素的地址,*(*(a+1)+1)表示a[1][1]的值。