Geschrieben von matern am 01.08.2004, 18:20

Felder in C

In diesem Tutorial möchte ich euch Felder etwas näher bringen.
Felder sind sehr praktisch und werden oft gebraucht wenn man in einem Programm große Datenmengen verarbeiten muss.
Man könnte genauso hunderte Varialblen von hand deklarieren - aber es geht auch einfacher - mit den sogenannten Feldern (engl.: Arrays)
Ein Feld ist eine Reihe von Variablen eines Typs (z.B. short, int, long, float, double oder char) .
Bevor man ein Feld jedoch verwenden kann muss man dem Feld mitteilen wie viele Plätze im Arbeitsspeicher
für die späteren Berechnungen im Programm gebraucht werden.
Die Anzahl der zu reservierenden Plätze schreibt man dann in eckige Klammern:
Eine Dekleration kann folgendermaßen ausehen:

int feld [5] // deklariert ein Feld vom Typ int, mit dem Namen Feld und 5 int Elementen
double array [7] // deklariert ein Feld vom Typ double, mit dem Namen array und 7 double Elementen
char hugo [9] // deklariert einen String vom typ char, mit dem namen hugo und 9 char elementen

Nachdem man dies deklariert hat, kann man auf jeden Platz des Feldes eine Zahl die dem Typ entspricht speichern.
Das sieht zum Beispiel so aus:

feld[3] =159 // speichert auf dem 3 ten Index von feld die Zahl 159
hugo[7] = 'p' // speichert auf dem 7 ten Index von hugo das Zeichen p

Dabei ist allerdings Vorsicht geboten, denn man sollte/darf die Größe des Feldes nicht überschreiten!
Wenn man z.B. ein Feld mit 10 Plätzen hat und man speichert auf den 11. Platz kann es passieren das Dateien die das Betriebssystem braucht überschrieben werden und es zum Absturz kommt.
Ein Feld beginnt immer mit dem Platz 0, also müsste es oben heißen, auf den 10. Platz. Also man beschreibt zuerst den Platz 0, dann den Platz 1... Wie man später merken wird ist das sehr praktisch.
Wie breits gesagt gibt es Felder von jedem Typ.
Felder vom Typ Char sind aber etwas besonderes, man nennt sie Strings. In Strings kann man Sätze oder Wörter speichern. Dazu gibt es einfache Befehle wie gets, puts, sscanf, sprintf,... Mit gets wird ein String, also ein Satz ein Wort oder auch Zahlen eingelesen, mit puts ausgegeben. Auch hier ist wieder Vorsicht geboten, man sollte einen Eingabestring nie zu klein deklarieren da der Benutzer ja auch lange Sätze eingeben kann, der Combiler nimmt darauf keine Rücksicht und schreibt weiter auch wenn der String bereits zu ende ist. In String stehn nur die ASCII Plätze also würde eine eingelesene Zahl z.B. 5 als 53 im String stehn, also müsste man beim Rechnen das ASCII-Zeichen 0, also 48 subtrahieren. Weiters gibt es auch Pointerfelder, also ein Feld in dem sich nur Pointer, eines Typs, befinden.

Felder können auch mehrdimensional sein. So kann man zum Beispiel einen Kalender anlegen, z.B. 10 Wochen mit jeweils 7 Tagen, also 10 Felder mit jeweils 7 Plätzen. Dies geht natürrlich auch noch weiter, z.B. 10 Wochen mit jeweils 7 Tagen die wiederrum jeweils 24 Stunden haben...

Mit Feldern hat man also große Freiheiten die ohne sie nicht möglich wären, denn man kann ohne Aufwand große Mengen an Daten speichern und für Berechnungen verwenden. Ich hoffe ich konnte euch einen kleinen Überblick verschaffen.

Bewertung Anzahl