hand-pointerPointers

Adressen

Wenn man eine Variable var in einem Programm hat, wird mit &var die Adresse im RAM zurückgeben. Diese Adressierung haben wir mehrmals in mit der scanf() Funktion benutzt.

scanf("%d", &var);

Hier wird der Wert vom User in der Adresse der var Variable gespeichert. Ein weiteres Beispiel:

#include <stdio.h>
int main()
{
  int var = 5;
  printf("var: %d\n", var);

  // Notice the use of & before var
  printf("address of var: %p", &var);
  return 0;
}
circle-exclamation

Pointers

Pointers sind spezielle Variablen welche benutzt werden, um Adressen anstatt Werte zu speichern.

Hier haben wir einen Pointer ptr vom Typ int. Man kann auch Pointer auch folgendermassen deklarieren.

Adressen an Pointer zuweisen

Hier wird der Variable c 5 zugewiesen. Die Adresse von c wird dem Pointer ptrC zugewiesen.

Wert des von Pointers abrufen

Um den Wert von einem Pointer gezeigten Objekts zu bekommen, benutzt man den * Operator.

Hier wird die Adresse von c ist dem Pointer ptrC zugewiesen. Um den Wert, welcher in dieser Adresse ist zu bekommen, haben wir *ptrC benutzt.

Ändern des Wert von Pointern

Wir haben die Adresse von c dem Pointer ptrC zugewiesen. Dann haben wir den Wert von c auf 1 geändert. Dadurch, dass die Adresse von ptrC und c dieselbe ist, gibt uns *pc 1 zurück.

Ein weiteres Beispiel:

Wir haben die Adresse von c dem Pointer ptrC zugewiesen. Dann haben wir den Wert von ptrC auf 1 geändert mit *ptrC = 1;. Dadurch, dass die Adresse von ptrC und c dieselbe ist, gibt uns c ebenfalls 1 zurück.

Zusammenfassung

Folgend ist ein Beispiel, welches alle Möglichkeiten zusammenfasst.

Last updated