Making LCD menu's: multidimensional char arrays.

After reading for a bit, I found out that 2D arrays need to be declared via a pointer.

You are reading in the wrong place, then.

However, even before you begin to initialize the array, you need to consider this:

 #define CHAR 16   //Number of characters per LCD line
 #define MAX  100  //Max number of menu items
 #define ROW  2    //Number of LCD rows

16 * 100 * 2 = 3200 bytes of the 2K that you have available, if you are using a 328-based board.

Try making MAX a (much) more reasonable value.