求解一个C的二维数组指定初始化的基础问题

如int a[5][5]的指定初始化,a[2][3]=5为什么这种形式不行但是*(*(a+2)+3)=5却可以,
书上有说指定初始化的话只能在开头并且用特定形式,只是为什么指针能不受限制呢?

a[2][3]=5可以啊

http://ideone.com/xdqrzO
在线编译验证通过