*(*(a+i)+j)的问题

假设
int a[][3]={1,2,3,4,5,6},b;
b=((a+1)+1);
a是个二维数组,表示二维数组a的地址,a[0]、a[1]可看作是2个一维数组,分别是一维数组a[0]、a[1]的地址,a[0]的值为{1,2,3},a[1]的值为{4,5,6},也就是a[0][0]的值为1,a[1][0]的值为4,依此类推
a+1是个地址,是二维数组a的第二个元素的地址,也就是a[1]的地址
(a+1)是个值,但也是个地址,其值就是二维数组a的第二个元素的值,也就是a[1]的值,a[1]是个地址,也就是一维数组a[1]的地址
因此a+1和
(a+1)其实都是a[1]的地址值,前者是二维数组的地址,后者是二维数组的值,也即一维数组的地址
*(a+1)+1也就是a[1]+1,即一维数组a[1]的第二个元素,即a[1][1]的地址
((a+1)+1)就是a[1][1]的值,也就是5
a、a[0]、a都是a[0]的地址,a+1、a[1]、(a+1)都是a[1]的地址,可用以下语句验证
printf("%d,%d,%d",a,a[0],a);
printf("%d,%d,%d",a+1,a[1],
(a+1));
*(*(a+i)+j)的问题