Was C besonders auszeichnet, ist die Vielfalt an Datentypen. Standardtypen gibt es zwar nur einige wenige, jedoch können diese zu den komplexesten Konstrukten zusammengelegt werden. Variablen müssen in C vor allen anderen Operationen deklariert werden (diese Beschränkung existiert in C++ nicht mehr). Eine Deklaration in C sieht folgend aus:
[Schlüsselwörter] {Datentyp} [Schlüsselwörter] Variablenname [=Wert];
unsigned int iWert = 0;
In das Feld für \"Datentyp\" kann jeder in C vorhandene oder selbst definierte Datentyp geschrieben werden. Für \"Variablenname\" kann jede beliebige mit einem Buchstaben (A - Z, a - z, _) beginnende Zeichenfolge stehen, die jedoch nicht länger als 255 Zeichen sein darf. Zahlen dürfen nicht am Beginn des Variablennamens, sehr wohl jedoch in der Mitte oder am Ende stehen. Sonderzeichen dürfen (außer dem \'_\' ) überhaupt nicht vorkommen, da sie vom Compiler entweder als Operatoren identifiziert werden oder im Quellcode nicht erlaubt sind. Optional kann man der deklarierten Variable einen Wert zuweisen, der sich selbstverständlich im Verlauf des Programmes noch ändern kann. Die in eckigen Klammern ( [ ] ) stehenden \"Schlüsselwörter\" sind auch optional und können wie folgt aussehen:
2.2.1. Schlüsselwörter
Schlüsselwörter (engl.: keywords) können bei der Deklaration von Variablen verschiedene Funktionen ausüben und den Standarddatentyp damit erheblich verändern. Einige der wichtigsten Schlüsselwörter:
unsigned - Steht vor dem Datentyp und legt fest, dass die folgende Variable kein Vorzeichen hat, das heißt, dass sie nur positive Werte annehmen kann.
signed - Das Gegenstück zu unsigned. Eine Variable, die mit diesem Schlüsselwort deklariert wurde, kann sowohl positive als auch negative Zahlen aufnehmen. Zu beachten ist hier jedoch, dass diese Variable dann nur noch die Hälfte ihrer bisherigen Kapazität an positiven Zahlen annehmen kann. Die andere Hälfte wird eben für die negativen Zahlen verwendet. (Zusatz: 0 gilt als die erste positive Zahl)
register - Weißt den Compiler an, dass die folgende Variable, falls möglich, in ein Prozessor-register geschrieben werden soll, um die kürzeste Zugriffszeit zu erreichen.
long - Eigentlich ein eigener Datentyp, der jedoch als Ersatz von long int zu sehen ist. Er weist den Compiler an, eine 32 Bit Variable zu erzeugen.
short - Mit short verhält es sich ähnlich wie mit long, nur dass der Compiler angewiesen wird eine 16 Bit Variable zu erzeugen.
static - Das Schlüsselwort static lässt eine Variable auch über einen Block hinaus am Leben.
volatile - Dem Compiler wird hierbei mitgeteilt, dass eine Variable auch außerhalb des Programmes verändert werden kann. Diese ist z.B. bei Interrupts notwendig.
2.2.2. Zeiger
Der oft gehasste Begriff des Zeigers (engl. Pointer) ist in C so wichtig, wie das Amen im Gebet. Ein Pointer zeigt auf eine Variable im Speicher. Ein Pointer wird ähnlich deklariert, wie eine normale Variable, mit einigen Unterschieden:
{Schlüsselwörter} [Datentyp]* {Schlüsselwörter} Variablenname;
int *pnWert;
Einem Pointer sollte nicht direkt eine Adresse zugewiesen werden. Diese sollte von einer anderen Variable belegt werden. Ein Pointer, der mit einem bestimmten Variablentyp deklariert wurde, kann nur auf eine Variable des selben Typs zeigen. Dies ist wichtig, da der Typ des Zeigers die Länge der Variable angibt, auf die gezeigt wird. Ein Zeiger enthält in der Regel weniger Information als die Variable auf die er zeigt, was bei den später folgenden Funktionsaufrufen von Vorteil ist. Auch ist die Rückgabe von komplexen Datenstrukturen nur mit Hilfe ihrer Zeiger möglich. Abbildung 1 veranschaulicht den Begriff des Zeigers:
Abb. 1
Ein Zeiger muss nur so groß sein, wie die Adresse, auf die er zeigt. Die Adresse, auf die der Pointer hier zeigt, enthält eine Variable, deren Größe auch im MByte Bereich liegen könnte. Der Pointer bleibt trotzdem gleich groß sein, auch wenn er auf eine 4 Byte große Variable zeigen würde. Dies eröffnet nun die Möglichkeit, dass Variablen, die in verschiedenen Funktionen gebraucht werden, nicht aufwendig durch Kopieren des gesamten Inhalts an Unterfunktionen übergeben werden müssen, sondern lediglich durch Kopieren des Zeigers.
2.2.3. Felder
Felder sind in C Aneinanderreihungen von Variablen gleichen Typs. Man unterscheidet Felder nach ihrer Dimension. Diese Dimensionen entsprechen auch den Dimensionen von geometrischen Objekten. Demnach entspricht eine normale Variable einem punktförmigen Objekt, ein eindimensionales Feld einer Linie, ein zweidimensionales Feld einer Fläche und ein dreidimensionales Feld einem Körper. Felder werden in C folgendermaßen deklariert:
{Schlüsselwörter} [Datentyp] Feldname[feste Anzahl]; |