Sneaky pointer pointing pointers?

This probably needs one of the more experienced developers to answer, because they have the all mighty knowledge in there brains.

How do you define a dynamic pointer to an array of characters.
I thought it would have been:


char * pCharArray[32];

but after doing alot of research on a similar thing,
I came across a few cases where it said that the statement above actually creates 32 character pointers,
and not a pointer to an array of 32 characters.
And to correctly define a pointer to an array of 32 characters you need to specify it like this:


char (* pCharArray)[32];

:stare:

Can anyone tell me if this is correct.
And if it is, are there any actual differences between the two,
or do they act the exact same for all things?

Cheers,
SpyrL