Dies ist eine alte Version des Dokuments!


C → Arrays

Unter einem »Array« versteht man die Zusammenfassung von mehreren Variablen des gleichen Typs und des selben Namens.

Eindimensionale Arrays

Die allgemeine Syntax zur Definition eines eindimensionalen Arrays ist: Datentyp Arrayname [GROESSE];

Beispiele:

Array Deklaration

int alpha [4]; /* Array aus 4 Elementen vom Typ Integer */
char beta [9]; /* Array aus neuen Elementen vom Typ Character */

Die Anzahl der Elemente »[GROESSE]« muss immer eine positive, ganze Zahl sein. Das kann eine Konstate (Zahl) sein, nicht aber eine Variable. Die Größe eines Arrays kann nicht dynamisch zugeordnet werden, sie kann jedoch während der Laufzeit mit Hilfe der Funktionen »malloc()« und »calloc()« errechnet und konstruiert werden.

Angesprochen wird das gesamte Array über den Arraynamen und dem Indexwert der in [GROESSE] definierten Anzahl der Elemente des Arrays. Der Indexwert fängt bei Null an zu zählen (zero based index). Durch die Deklaration eines Arrays wird der benötigte Platz dafür, vorgegeben durch des Datentyp, im Speicher reserviert. Das bedeutet konkret, dass das Array »int alpha [4];« den Platz für vier Integer (int) Variablen belegt, die genaue Größe hängt vom zugrunde liegenden System ab. Bei einem 32 Bit Integer (4 Byte) werden demnach 16 Byte reserviert.

Bei der Initialisierung des Arrays wird dieses durch viele Compiler bereits mit Null gefüllt, solange nicht schon bei der Deklaration das Array initialisiert wird. Wird das Array mit weniger Elementen gefüllt, wie in [GROESSE] vorgegeben, dann wird der verbliebene Platz mit Null gefüllt. Die Angabe der Größe [GROESSE] des Arrays kann bei der Deklaration entfallen, wenn das Array explizit bereits bei der Deklaration initialisiert wird:

Initialisierung eines Arrays

int alpha [] = {0, 1, 2, 3};
int beta [4] = {0, 1, 2}; /* entspricht »int beta [4] = {0, 1, 2, 0};« */

Die Größe [GROESSE] (Anzahl der Elemente) eines Arrays kann man ermitteln, in dem man den Gesamtspeicherplatz eines Arrays durch den Speicherplatzbedarf des zugrunde liegenen Datentyps teilt:

sizeof_array.c

#include <stdio.h>
 
int alpha [] = {0, 1, 2, 3};
 
int main() {
    printf("Das Array alpha belegt im Speicher %d Byte Platz\n", sizeof(alpha));
    printf("Der Datentyp int (Integer) belegt pro Element %d Byte Platz im Speicher\n", sizeof(int));
    printf("Das Array alpha beinhaltet %d Elemente\n", sizeof(alpha) / sizeof(int));
    return 0;
}

$ ./sizeof_array
Das Array alpha belegt im Speicher 16 Byte Platz
Der Datentyp int (Integer) belegt pro Element 4 Byte Platz im Speicher
Das Array alpha beinhaltet 4 Elemente

tux/arrays.1323016745.txt.gz (8044 views) · Zuletzt geändert: 2011/12/04 17:39 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0