Step one: ditch the 2d arrays. You can do the (y*width+x) calculation yourself easily enough. This also simplifies things a lot.
If you're not able or willing to do so, however, realize that 2d arrays are nothing magical, and the compiler actually has a 1d array and is doing the above calculation for you every time you're using a 2d array.
To actually answer your question, you can make a typedef of the 2d array and then use that as the pointer type.
typedef int maptype;