C语言学习历程(十一)二维数组与指针的关系

下面是一个关于二维数组与指针之间,地址和值的运算输出:
*#include <*stdio.h>
{
int a[3][3]={{1,2,3},{3,4,5},{6,7,8}};
int i=0;
int j=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf(“%d\t”,((a+i)+j));
}

}
printf(“%0x,%0x\n”,a,a+1);
printf(“%0x,%0x\n”,a[0],a[0]+1);
printf(“%d,%d\n”,((a+0)+1),*a[0]+1);
printf(“%0x,%0x”,*(a+1)+1,a+1);
return 0;
}
printf(“\n”);
C语言学习历程(十一)二维数组与指针的关系
地址即指针!

a[i]=a+i=*(a+i)=&a[i]=&a[i][0];
上面这几个地址的值都是一样的,但是它们所对应的数据类型大小却不全一样;
a[i]的数据类型大小为4个字节,即a【i】+1跳过4个字节大小;
同样,其他几个依次是:
a+i:12字节;
*(a+i):4字节;
&a【i】:12字节;
&a【i】【0】:4字节;