Access Memory

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]);
Nach oben scrollen