关于二维数组的指针问题

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]的值。

猜你喜欢

转载自www.cnblogs.com/L1Gd0ng/p/10920984.html