Zurück zu: C Tutorial
0
Zugriff auf den dynamischen Speicher
Der dynamische Speicher verhält sich wie ein Array, wobei sein Datentyp durch den Typ des Zeigers angegeben wird.
Um auf ein Element im dynamischen Speicher zuzugreifen, verweisen Sie wie bei Arrays auf seine Indexnummer:
ptr[0] = 12;
Sie können den Zeiger auch dereferenzieren, um auf das erste Element zuzugreifen:
*ptr = 12;
Beispiel
Lesen aus und Schreiben in den dynamischen Speicher:
// Allocate memory
int *ptr;
ptr = calloc(4, sizeof(*ptr));
// Write to the memory
*ptr = 2;
ptr[1] = 4;
ptr[2] = 6;
// Read from the memory
printf("%d\n", *ptr);
printf("%d %d %d", ptr[1], ptr[2], ptr[3]);
Ein Hinweis zu Datentypen
Dynamischer Speicher hat keinen eigenen Datentyp, sondern ist nur eine Folge von Bytes. Die Daten im Speicher können basierend auf dem Datentyp des Zeigers als Typ interpretiert werden.
In diesem Beispiel kann ein Zeiger auf vier Bytes als ein Int
Wert (4 Bytes) oder als Array von 4 Char
Werten (je 1 Byte) interpretiert werden.
Beispiel
int *ptr1 = malloc(4);
char *ptr2 = (char*) ptr1;
ptr1[0] = 1684234849;
printf("%d is %c %c %c %c", *ptr1, ptr2[0], ptr2[1], ptr2[2], ptr2[3]);