可以用一个一级指针指向一个二维数组吗?

看到书上写的都是二级指针,如int *p[4]等等,

数组不是在内存中的存储是连续的吗,

为什么不用一级指针直接指向第一个元素呢?

直接用一个指针,就可以完成指向数组的功能,无论数组是多少维。
只是指向后,如果控制下标需要自己考虑。其实,数组名就可以认为是一个静态的指针。

数组确实是连续的,但不能用一级指针指向一个二维数组,因为一级指针中存的是值的地址,而二级指针存的是指针的地址。

建议你读下这篇文章
http://www.cnblogs.com/wanpengcoder/archive/2010/07/17/1779503.html

就你的例子而言,int *p[4]是个数组,里面有4个整数指针,但这四个指针执向的整数不要求是连续的,可以是离散存储的,所以这不等价于整数的二维数组。