Mi a kulonbseg? Mind a ket esetben egy pointert kapsz egy char tipusra.
Az a különbség, hogy az
extern char *a;
extern char a[];
közül az első egy olyan globális objektumra mutat, amihez egy pointer méretű memóriaterület tartozik, és az "a" értéke az adott objektumhoz tartozó memóriaterületen eltárolt pointer, az &a kifejezés értéke pedig a globális objektum címe.
A második egy olyan globális objektumra mutat, aminek a mérete ismeretlen, és "a" értéke a globális objektumhoz tartozó memóraterület címe. A második objektumnál nem definiált fogalom az &a.
Az első "a"-nak lehet értéket adni, az értékadás alkalmából a pointert beírjuk a memóriaterületre. A második "a"-nek nem lehet értéket adni, az mindig ugyanarra a memóriaterületre fog mutatni.