Pointer sind Adressen. Wenn du auf einen Pointer zugreifst greifst du auf die Adresse zu die in dem Pointer steht. Beispiel.
#include <stdio.h>
int main() {
int a = 10; // Eine Variable mit dem Wert 10
int *p = &a; // Ein Zeiger, der die Adresse von 'a' speichert
printf("Wert von a: %d\n", a); // Ausgabe des Werts von 'a'
printf("Adresse von a: %p\n", (void *)&a); // Adresse von 'a'
printf("Wert von p (Adresse von a): %p\n", (void *)p);
printf("Wert, auf den p zeigt: %d\n", *p); // Dereferenzierung von 'p'
// Änderung des Werts von 'a' über den Zeiger
*p = 20; // 'a' wird auf 20 gesetzt
printf("Neuer Wert von a: %d\n", a); // Ausgabe des Werts von 'a'
printf("Adresse von a: %p\n", (void *)&a); // Adresse von 'a'
printf("Wert von p (Adresse von a): %p\n", (void *)p);
printf("Wert, auf den p zeigt: %d\n", *p); // Dereferenzierung von 'p'
return 0;
}