I'm trying to store an array of pointers to arrays, but I can't get the declaration syntax right. My compiler (MS Visual Studio 2005 Professional Edition) gives me this error message:
Code:
warning C4047: 'initializing' : 'const BYTE *' differs in levels of indirection from 'int'
The goal of this array is to store images of characters that I draw to LED matrices. I store each image as an array of 5 BYTEs (unsigned chars). Not every character from 0 to 255 has an image, so I want to store a NULL pointer for characters that don't have images.

Here's the array declaration and a diagram of what I expect it to look like in memory, with red text for simplifications/commentary:
Code:
const BYTE *gc_ppbCharMatrices[ /* UCHAR_MAX + 1 */ ] =
{
	/* Control characters */
	NULL, NULL, /* 32 NULL entries total indicate no bitmap available */
	/* Bitmap data */
	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ' ' */
		/* I expect this to initialize a constant array
		   somewhere else in memory and return the
		   pointer to that array. */
	{ 0x00, 0x00, 0x2f, 0x00, 0x00 }, /* '!' */
	{ 0x00, 0x03, 0x00, 0x03, 0x00 }, /* '"' */
	{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, /* '#' */
	/* ...Etc; includes bitmaps up to 126 ('~' character) */
	NULL, NULL
	/* ...NULL pointers continue from 127 through to the end of the array */
};
Diagram of intended memory layout:
http://img266.imageshack.us/img266/9154/arrayur3.gif


The contents of the array aren't important, but I need to be able to initialize the array in this way with pointers to other constant arrays. It gets stored in ROM and can't be altered after initialization.

How can this be done in C, or is it even possible?