多维数组指针的有关问题

多维数组指针的问题。
学习多维数组的时候遇到这么个问题 :
 请写出下列表达式的值 int[2][3]={1,2,3,4,5,6}; 
  a[1][1]=    ,  
*(a[1]+1)=    ;
**(a+1)=   ;  
(*(a+1))[1]=   ;
前两个我能理解,都是指元素 5, 但是后两个不明白。 a+1是 元素4的地址, *(a+1)不是指元素4么, **(a+1)是什么意思?
最后 应该是5吧, 不应该表示 ((a+1))[1] 么? 对于指针不怎么明白。   
 希望能给详细解释一下,谢谢

------解决思路----------------------
要理解这个,得有一定的抽象思考的能力。
首先第一点,没有多维数组,只有一维数组;所谓的多维,不过是一维的递归定义。
其次对于一维数组,其数组名是指向第0个元素的指针(在不够准确的上下文中),对其解引用(*p或者p[0]都算是解引用)得到第0个元素。

理解了上述两点之后,再来看:
int a[2][3]={1,2,3,4,5,6};
这里的a是一个一维数组,该数组有2个元素,元素类型为int[3];
第0个int[3]是个一维数组,有3个元素,元素类型为int,值分别是1,2,3;
同理,第1个int[3]也是一个一维数组,值分别是4,5,6。

a[1][1]
a[1],取a的第1个元素,即第1个int[3](记得它又是个数组);
a[1][1],取a[1]的第1个元素,即5。

*(a[1]+1)
同上,对于一维数组,*p和p[0]是一回事,*(p + 1)和p[1]是一回事。

**(a+1)
a指向数组的第0个元素,那么a + 1则指向数组的第1个元素,即第一个int[3];
*(a + 1)即对其解引用,得到第1个int[3],它是个数组;
**(a + 1)对第1个int[3]解引用,即得到第1个int[3]的第0个元素,即4。

(*(a+1))[1]
同上*(a + 1)得到第1个int[3],然后[1]取该int[3]的第1个元素,即5。