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;
}