Strukturen

Aufbau und Erklärung von Strukturen + Beispiel




Strukturen
Mit Feldern können mehrere Daten des gleichen Typs zusammengefasst.
Mit Strukturen dagegen können Daten unterschiedlicher Typen unter einem neuen
Namen zusammengefasst werden. Als Beispiel betrachten wir zunächst eine Struktur
Punkt, mit der ein Punkt der reellen Ebene dargestellt werden soll.

struct Punkt {
double x; // x-Koordinate double

double y; // y-Koordinate
}; //Semikolon ist hier unbedingt notwendig
Die beiden Komponenten x und y haben hier zwar den gleichen Typ, so dass sie
auch mit einem Feld zusammengefasst werden könnten, aber für die Anwendung ist
es anschaulicher, die Komponenten mit ihren Namen statt über Nummern
anzusprechen. Die Verwendung des neuen Typs Punkt kann beispielsweise
folgendermaßen aussehen.

Punkt p,q; //p und q sind Variablen vom Typ Punkt

p.x = 2;
p.y = 0.2;
q.x = p.x +3 ;
q.y - p.y;




Beim Zugriff auf die Daten schreibt man also





Variablenname.Komponentenname




Der größte Nutzen von Strukturen besteht darin, dass man leicht mehrere
zusammengehörige Daten gemeinsam als Parameter an Funktionen übergeben kann.
Leider ist es jedoch nicht möglich, die üblichen Vergleichsoperatoren auf
Strukturen anzuwenden. Dazu muss man sich eigene Operatoren definieren, die dann
z.B. einen komponentenweisen Vergleich durchführen.

Als weiteres Anwendungsbeispiel führen wir jetzt den Typ Datum ein, mit dem
Termine dargestellt werden sollen.

enum monatstyp {Januar=l, Februar, Maerz, April, Mai, Juni, Juli,

August, September, Oktober, November, Dezember};
struct Datum{
short int tag;
monat s t yp monat ;
int jähr;
};

Beispielsweise würde man eine Datumsvariable d folgendermaßen mit dem Datum
"18.3.96" initialisieren. (Die Notation sieht ähnlich aus, wie das
Initialisieren von Feldern.)

Datum d={ 18, Maerz, 1996 };

Im folgenden soll eine Funktion alter implementiert werden, die die Differenz
zweier Termine (in Jahren) ermittelt. Beispielsweise kann sie verwendet werden,
um das Alter einer Person zum Zeitpunkt heute zu ermitteln, wenn die Person zum
Zeitpunkt geb geboren wurde. Prinzipiell geht man dabei so vor, dass die
Differenz der Jahreszahlen gebildet wird. Ist der Geburtstag im aktuellen Jahr
jedoch noch nicht erreicht, so muss dieser Wert um l verringert werden.