• z = &x;
    #include <stdio.h>
    
    int main(){
    
        int x=5;
        int *z;
        
        z=&x;
    
        printf("x: %d\n", x);
        printf("z: %d\n", *z);
        
        return 0;
    }

    z = &x;

    Der Zeigervariablen z wird die Adresse der Variablen x zugewiesen. Von nun an "zeigt" z auf x.

    Wird z dereferenziert, so erhalten wir immer den Wert von x.

    >> x: 5
    >> z: 5
  • int *z = &x;
    #include <stdio.h>
    
    int main(){
    
    
        int x=5;
        int *z=&x;
    
    
        printf("x: %d\n", x);
        printf("z: %d\n", *z);
        
        return 0;
    }

    int *z = &x;

    Es wird die Zeigervariable z deklariert und direkt mit der Adresse von x initialisiert. Von nun an "zeigt" z auf x.

    Das Ergebnis ist identisch zum vorhergehenden Beispiel.

    >> x: 5
    >> z: 5
  • *z = 7;
    #include <stdio.h>
    
    int main(){
        int x=5;
        int *z;
        
        z=&x;
        *z=7;
    
        printf("x: %d\n", x);
        printf("z: %d\n", *z);
        
        return 0;
    }

    *z = 7;

    Der Zeigervariablen z wird die Adresse der Variablen x zugewiesen.

    Anschließend wird der Variablen, auf die z "zeigt", der Wert 7 zugewiesen.

    >> x: 7
    >> z: 7
  • *z = &x;
    #include <stdio.h>
    
    int main(){
        int x=5;
        int *z;
        
        z=&x;
        *z=&x;
    
        printf("x: %d\n", x);
        printf("z: %d\n", *z);
        
        return 0;
    }

    *z = &x;

    Der Zeigervariablen z wird die Adresse der Variablen x zugewiesen.

    Anschließend wird der Variablen, auf die z "zeigt", die Adresse der Variablen x zugewiesen.

    >> x: 516964
    >> y: 516964

    Dieses Beispiel ist zwar, je nach Compiler-Einstellung, möglich, hat aber in der Regel keine sinnvolle Verwendungsmöglichkeit.
  • x = z; z = x;
    #include <stdio.h>
    
    int main(){
        int x=5; int *z=&x;
        
        x=z;
        printf("x: %d\n", x);
        printf("z: %d\n", *z);
        
        z=x;
        printf("x: %d\n", x);
        printf("z: %d\n", *z);
        return 0;
    }

    x = z; z = x;

    Der Variablen x wird der Wert der Zeigervariablen z zugewiesen.
    Anschließend wird z als Zieladresse der Wert der Variablen x zugewiesen.

    >> x: 516964
    >> z: 516964
    >> x: 516964
    >> z: 516964
    

    Dieses Beispiel ist zwar, je nach Compiler-Einstellung, möglich, hat aber in der Regel keine sinnvolle Verwendungsmöglichkeit.