Bei der Deklaration einer Variablen wird dem Compiler nur mitgeteilt, daß es eine Variable dieses Typs und dieses Namens gibt. Woher diese kommt, interessiert dabei noch nicht und falls diese fehlt, wird der Compiler es erst sehr spät merken, nämlich erst dann, wenn sie benutzt werden soll.
Mit der Definition einer Variablen weist man den Compiler dann an, für diese Variable Speicherplatz zu reservieren, und diesen Speicherplatz mit der Variablen zu verknüpfen. Über eine Definition wie:
int zahl = 42;
weise ich den Compiler an, Platz für eine Variable vom Typ int
zu reservieren und diesen Speicherplatz zu nutzen, wenn die Variable
genutzt wird. In diesem Fall erfolgt auch gleich eine Zuweisung, d.h.
es wird etwas in den Speicherplatz eingetragen, nämlich der
Zahlenwert 42.
Die Zuweisung muß dabei nicht bei der Definition erfolgen, sondern kann auch später gemacht werden:
int zahl; // Deklaration und Definition // ... zahl = 42; // Zuweisung
extern
voranstellt, um eine Variable
zu deklarieren, die in einem anderen Programmteil definiert wird:
extern int zahl; // nur Deklaration - Definition muß woanders erfolgen