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[512][512];

hunguptodry
—
2010-04-23T05:23:49Z —
#3

too much code to change, so sticking with the 2D arrays. the typedef worked great. thanks.

The idea is that, just like with an array of ints where you'd point to the first element in the array, now you have to point to the first element in an array of [array of int]. And each such element is an array of 512 ints, in other words, int[512].