Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home weitere Möglichkeiten für Variablendeklarationen Felder enum

8.2 Strukturen

Sollen unterschiedliche Datentypen zu einem zusammengefaßt werden, bietet sich dafür eine Struktur bzw. struct an. Eine Variable, die ein struct ist, wird deklartiert, indem das Schlüsselwort struct und anschließend in geschweiften Klammern die einzelnen Komponenten mit Datentyp und einem Namen angegeben werden. Die Struktur kann auch einen Namen erhalten, der nach dem Schlüsselwort struct angegeben wird. Über diesen Namen können weitere Variablen deklariert werden, ohne daß der Aufbau der Struktur nochmals angegeben werden muß. Auf eine einzelne Komponente eines struct wird zugegriffen, indem dem Namen der Variabnle ein Punkt folgt, gefolgt von dem Namen der Komponente. Die einzelnen Bestandteile eines struct müssen nicht notwendigerweise verschiedenen Datentypen sein. Wenn es für das Verständnis günstiger ist, über einen Namen und nicht über ein Feldindex zuzugreifen, wie z.B. bei komplexen Zahlen, bietet sich ein struct an.

int main()
{
   struct complex {
      float real;
      float imaginaer;
   };
   struct {
      int i;
      long j;
   } a;
   struct complex c;

   a.i = 10;
}

In dem Beispiel wird eine Variable a deklariert, die vom Datentyp struct ist. Als Beispiel für den Zugriff auf die Komponenten wird die Komponente i auf den Wert 10 gesetzt. Über der Variablen a wird ein struct mit dem Namen complex deklariert. Hier wird aber mit der Strukturdeklaration keine Variable deklariert. Weiter unten wird eine Variable c deklariert, die vom Typ struct ist. Hier wird nur der Name der Struktur angegeben, der Aufbau der Struktur wurde schon oben beschrieben und muß nicht nochmals wiederholt werden. Ein struct kann auch mehr als 2 Komponenten wie in dem Beispiel haben.

Damit können wir zum angekündigten Beispiel kommen, dem Cookie-Jar. Eine kurze Erklärung, was der Cookie-Jars ist und wie er aufgebaut ist, findet sich im Kapitel Cookie-Jar. Da ein Cookie aus 2 Teilen besteht, die jeweils 4 Byte belegen, bietet sich ein struct an. Als Komponenten sind sowohl Felder mit 4 char als auch long bzw. unsigned long möglich. Wegen der einfacheren Handhabung, z.B. Vergleiche, wählen wir unsigned long. Damit haben wir das erste Teilstück des Programms "cookie-1.c", das wir in den weiteren Kapiteln ausbauen.

...
struct cookie {
   unsigned long name;
   unsigned long value;
};

Da im Cookiejar beide 4 Byte-Werte direkt hintereinander im Speicher stehen, wäre es nützlich, wenn die Struktur im Speicher genauso angeordnet ist. Diese Ausrichtung oder Alignement ist vom Compiler und Maschine abhängig und kann bei einigen Compilern im Quelltext mit Hilfe des Präprozessors eingestellt werden. Auf 68K Prozessoren wird üblicherweise ein Alignement von 2 Bytes benutzt, um Variablen auf gerade Adressen zu legen. Bei TC ist das Alignement 1 Byte, wenn char kombiniert werden, andernfalls 2 Bytes, und kann nicht geändert werden. Das Alignement ist meines Wissens für die verschiedenen Compiler nicht dokumentiert.


Home weitere Möglichkeiten für Variablendeklarationen Felder enum


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum