What are the differences between an array of char pointers and a 2D array?
char* my_string[];
represents an array of strings.
int my_grid_of_ints[][];
char my_block_of_text[][];
If color = byte[3]
then you could represent your screen monitor
color my_pixel_buffer[][] = new color[768][1024];
is a 2D array. As you can see, a 2D array can represent anything, including an array of char pointers (such as multiple lines of strings).