1 Pluspunkt 0 Minuspunkte
Was bedeutet Pointer Arithmetik und wie kann man es in der Praxis anwenden?
von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Pointer Arithmetik bezieht sich auf die Verwendung von arithmetischen Operationen (Addition, Subtraktion, ..) auf Zeiger (Pointer). Ein Zeiger ist eine Variable, die die Speicheradresse einer anderen Variable enthält.  Wenn du beispielsweise einen Zeiger auf den Anfang eines Arrays hast, kannst du mit Pointer Arithmetik auf die verschiedenen Elemente des Arrays zugreifen, indem du den Zeiger verschiebst.

int arr[5] = {10, 20, 30, 40, 50};
int *ptr = arr;  // ptr zeigt auf das erste Element des Arrays (arr[0])

// Mit Pointer-Arithmetik auf das zweite Element zugreifen
ptr = ptr + 1;  // ptr zeigt jetzt auf arr[1]
int secondElement = *ptr;  // secondElement enthält jetzt den Wert 20

Pointer Arithmetik basiert auf dem Datentyp des Zeigers. Das bedeutet, wenn du einen Zeiger auf einen int hast und ihn um 1 erhöhst, bewegt er sich um die Größe eines int (normalerweise 4 Bytes auf den meisten modernen Systemen) bei einem Char bewegt er sich um 1 Byte.

von (868 Punkte)  
0 Pluspunkte 0 Minuspunkte

Bei der Arbeit mit Speicherinhalten wie in Netzwerkprotokollen oder Dateiformaten kann Pointer Arithmetik verwendet werden, um Feldoffsets zu berechnen.

struct Header {
    int id;
    char name[10];
    float value;
};

struct Header h;

char *ptr = (char *)&h;

int id = *(int *)ptr;            // Zugriff auf id
char *name = (char *)(ptr + 4);  // Zugriff auf name
float value = *(float *)(ptr + 14); // Zugriff auf value
von (884 Punkte)