With the danger that I'm sounding a bit school master like,
there's a difference between
extern char *blah;
and
extern char blah[];
Since arrays are treated as pointers in C one might think these are the same. But no.
The former defines a variable in memory which points to the real "blah" (and contains its address). The latter is just the address of "blah" without the additional pointer indirection.
regards,
chris