#32 Datenstrukturen Flashcards

1
Q

Was ist das Ziel von Strukturen? Nenne auch die Syntax.

A

Ziel: Zusammenfassung der Attribute mit unterschiedlichem Datentypen in
einem neuen Datentyp.
Beispiel: ein Kunde wird durch Namen und Adresse sowie Kundennummer
definiert.

Syntax:
struct [Typname] {
Komponente1;
[Komponente2; …]
} [VarName1, …];

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was sind die zulässigen Operationen für Strukturen?

A
  • Übergabe an Funktionen als Parameter (call by value!)
  • Rückgabe einer Struktur aus einer Funktion
  • Zuweisungsoperator für gesamte Struktur (Kopie wird erzeugt)
  • Adress- und sizeof-Operator
  • Elementzugriffsoperator: Punkt (.)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie werden die Attribute einer Struktur bei der Deklaration gesetzt?

A

Direkte Zuweisung von Attributen: Die Attribute einer Struktur können direkt bei der Deklaration gesetzt werden.
Beispiel:

struct Spieler {
char name[50];
int alter;
long punktzahl;
};

struct Spieler bob = {“Bob”, 12, 20000};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Welcher Operator erlaubt den Zugriff auf Inhalte von Strukturen über Zeiger?

A

Operator: ->

Beispiel:

typedef struct s_kunde {
char name[64];
int alter;
} kunde;
kunde k1;
kunde *zeiger = &k1;

Normalerweise: (*zeiger).alter = 20;
Besser: zeiger->alter = 20;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was sind die Eigenschaften von Bitfeldern?

A
  • Bitfelder dienen zur Verringerung des Speicherbedarfs und leichteren Zugriff auf einzelne Bits.
  • Die Syntax ist analog zu struct, hinter jedes Element wird die Anzahl der
    benötigten Bits geschrieben.
    Beispiel für Bitfeld (1 Byte groß):

struct zeichen {
unsigned char data:7;
unsigned char parity:1;
};

Achtung: Das Bitfeld belegt mindestens so viel Speicher wie der größte
enthaltene Datentyp.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was sind die Eigenschaften von Unions?

A
  • Syntax analog zu Strukturen, Schlüsselwort union statt struct
  • Es wird jedoch nur einer der Werte gespeichert.
  • Speicherbedarf der Union richtet sich nach dem größten Element.
  • Beispiel:

union typen {
int i;
double d;
} u;
u.i = 5;
u.d = 2.3;

(u.i ist nun undefiniert)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wofür werden Unions genutzt?

A
  • Einsparen von Speicherplatz: wenn sichergestellt ist, dass manche
    Informationen nicht gleichzeitig gespeichert werden müssen.
  • Maschinennahe Manipulation: Interpretation eines Speicherbereichs durch
    verschiedene Datentypen (z.B. um auf Gleitkommazahlen auch
    Bitmanipulationen durchführen zu können).
    Achtung: Solche Programme sind i.d.R. nicht portierbar!
  • Bessere Lesbarkeit
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Nenne Schlüsselpunkte zum Speicherlayout von: Arrays, Strukturen, Bitfelder und Unions

A

Arrays:
- speichern eine geordnete Sammlung von Werten des selben
Datentyps.
- Das Speicherlayout von Arrays ist einfach und effizient, da die Elemente des Arrays direkt hintereinander(sequenziell) im Speicher platziert werden.
Strukturen:
- fassen Attribute zu neuem Datentyp zusammen.
- Die Speicherzuweisung für Strukturen erfolgt normalerweise sequenziell, d.h. die Mitgliedsvariablen werden nacheinander im Speicher platziert.
Bitfelder:
- sind Strukturen mit eingegrenztem Speicherbedarf.
- definiert eine Struktur, in der die Mitgliedsvariablen explizit als Bitfelder deklariert werden, und jeder Variablen wird eine bestimmte Anzahl von Bits zugewiesen.
Unions:
- teilen sich Attribute einen Speicherbereich.
- Im Gegensatz zu Strukturen teilen Unions alle ihre Mitglieder denselben Speicherplatz.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly