Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.

Ähnliche Präsentationen


Präsentation zum Thema: "Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen."—  Präsentation transkript:

1 Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen angesprochen werden können. Sie belegen einen zusammenhängenden Speicherblock Regeln vgl. Kompaktreferenz S 105

2 Strukturdeklaration Beispiel: struct student { char name[21]; //Nachname char vorname[21]; //Vorname long nummer; //Matrikelnummer int punkte[4]; //Beurteilung };

3 Definition von Variablen Die Deklaration beschreibt den Aufbau der Struktur. Es wird noch keine Variable angelegt. Dies geschieht mit: struct student s1, s2; struct student f[120]; struct student *ps;

4 Zugriff auf Komponenten Der Zugriff auf Komponenten erfolgt mit Hilfe des Punktoperators: struct student s; strcpy(s.name, “Huber“); strcpy(s.vorname, “Franz“); s.nummer = ; s.punkte[0] = 7;

5 Initialisierung von Strukturvariablen Strukturvariable können ähnlich wie Felder bei ihrer Definition auch initialisiert werden: struct student s = { “Huber“, “Franz“, , {7,10,8,60} };

6 Erlaubte Operationen mit Strukturen Zuweisung kompletter Strukturvariablen (im ANSI-C Standard erlaubt) struct student s1, s2; s2 = s1; Anwendung von Adress- und sizeof- Operatoren struct student *p = &s1; printf(“%d“, sizeof(s1));

7 Nicht erlaubte Operationen mit Strukturen Vergleich ganzer Strukturvariablen struct student s1, s2; if(s1 < s2) {...} //falsch Strukturvariable können nur komponentenweise verglichen werden. Explizite Typumwandlung ist nicht möglich. struct student s; struct person p; p = (struct person) s; //falsch

8 Zugriff über Pointer, Pfeiloperator Wird mit sp=&s; im Pointer sp die Adresse von s abgespeichert, so müssten die einzelnen Komponenten z.B. mit (*sp).nummer = ; angesprochen werden. Da diese kompliziert zu schreibende Anweisung oft benötigt wird, gibt es einen speziellen Operator (den Pfeiloperator): sp->nummer = ;

9 Strukturen als Funktionsparameter Da im ANSI-C die Zuweisung ganzer Strukturen erlaubt ist, können Strukturvariable wie ganz normale Variable by Value an Funktionen übergeben werden und mit Hilfe von return retourniert werden. Besser ist jedoch die Übergabe by Reference, da andernfalls jedes Mal die ganze Struktur am Stack kopiert wird.

10 Übung 7_1 Es ist ein Programm zu schreiben, das maximal 20 Sätze von Personendaten(Name, Vorname, Alter) einliest und anschließend die Daten der ältesten Person ausgibt.

11 Dynamische Speicherverwaltung Mit Hilfe dynamischer Speicherverwaltung wird Speicher für einzelne Variable oder Felder erst zur Laufzeit angefordert. Dieser Speicher liegt nicht am Stack, sondern am sog. freien Speicher oder Heap Dynamisch angeforderter Speicher muss wieder freigegeben werden.

12 Dynamische Speicherverwaltung In C erfolgt dynamische Speicherverwaltung über Funktionen: void *malloc( size_t size ); Fordert Speicher der Größe size Bytes an und schickt bei Erfolg die Adresse, sonst NULL zurück. void free( void *memblock ); Gibt den ab der Adresse memblock dynamisch angeforderten Speicherbereich wieder frei.

13 Beispiel Das folgende Beispiel zeigt die dynamische Speicherverwaltung an Hand eines Integerfeldes: int *p, n = 100, i; // Anforderung des Feldes p = malloc(n * sizeof(int)); // p = (int *) malloc(n * sizeof(int)); // Abarbeitung for(i=0; i

14 Übung 7_2 Lesen Sie maximal 200 Strings über die Tastatur, speichern Sie die Strings dynamisch mit Hilfe eines Feldes von char- Pointern möglichst platzsparend, sortieren Sie die Strings und geben Sie die sortierten Strings wieder aus.


Herunterladen ppt "Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen."

Ähnliche Präsentationen


Google-Anzeigen