struct <struct_bezeichner>
{
<Datendeklaration>
};
|
erlaubt die Deklaration von Variablen diesen Typs
<struct_bezeichner> <var_bezeichner>; |
Beispiel: Wir deklarieren einen Datentyp zur Speicherung der persönlichen Daten eines Studenten. (siehe Ex520.cc)
// Structure
{
// new structure
struct Student
{
long long int matrikel;
int skz;
char name[30], vorname[20];
};
// Variable of type Student
Student arni,robbi;
// Data input
cout << endl << " Vorname : ";
cin >> arni.vorname;
...
robbi = arni; // complete copy
cout << robbi.vorname << endl;
}
|
Die Zuweisung robbi = arni; kopiert den kompletten Datensatz
von einer Variablen zur anderen.
Der Zugriff auf die Komponente vorname der Variablen arni
(des Typs Student) erfolgt über
arni.vorname
Abgespeichert werden die Daten in der Form
Abhängig von Compilereinstellungen bzw. -optionen können kleinere ungenutzte Speicherlücken zwischen den Komponenten im Speicher auftreten (Data Alignment für schnelleren Datenzugriff).
Die Struktur Student kann leicht für Studenten, welche
mehrere Studienrichtungen belegen, erweitert werden.
(siehe Ex520b.cc)
{
const int MAX_SKZ=5;
struct Student_Mult
{
long long int matrikel;
int skz[MAX_SKZ];
int nskz; // number of studies
char name[30], vorname[20];
};
// Variable of type Student
Student arni,robbi;
// Data input
cout << endl << " Vorname : ";
cin >> arni.vorname;
...
robbi = arni; // complete copy
cout << robbi.vorname << endl;
}
|
Die Struktur Student enthält
bereits Felder als Komponenten. Andererseits können
diese Datentypen wiederum zu Feldern arrangiert werden.
(siehe Ex522.cc)
// Array of structures
{
struct Student // new structure
{
...
};
const int N = 20;
int i;
Student gruppe[N]; // Array
// Init
for (i = 0; i < N; i++)
{
cin >> gruppe[i].vorname;
...
}
...
}
|
Strukturen können wiederum andere strukturierte Datentypen als Komponenten enthalten. (siehe Ex523.cc)
// Structures in structures
{
struct Point3D // simple structure
{
double x,y,z;
};
struct Line3D // structure uses Point3D
{
Point3D p1,p2;
};
Line3D line; // Declare variable
// Init
cout << "Anfangspkt.: ";
cin >> line.p1.x >> line.p1.y >>line.p1.z;
cout << " Endpkt.: ";
cin >> line.p2.x >> line.p2.y >>line.p2.z;
...
}
|
In obigem Beispiel ist line.p2 eine Variable
vom Typ Point3D , auf deren Daten wiederum mittels des
. Operators zugegriffen werden kann.