Struktur-Pointer-scanf



  • warum geht nicht? 🙂

    #include <stdio.h>
    
    struct test
    {
        int x;
    }*p;
    
    int main()
    {
    
    printf ("Wert: ");
    scanf ("%i",&p->x);
    printf ("%i",p->x);
    
    getchar();
     return 0;
    }
    


  • Weil keine Beine. 🙂
    Und weil p keine gültige Adresse zugwiesen bekommen hat, guckst du:

    struct test 
    { 
        int x; 
    }*p; 
    
    int main() 
    { 
    	printf ( "%p", p ); // Guckst du: 00000000 ( Zeiger hat keine gültige Adresse. )
    	getchar(); 
    	return 0; 
    }
    


  • Das ist natürlich schlecht... 🙂
    sry kenne mich leider in c nicht
    sonderlich gut aus.
    Was genau macht dann p->x?
    und gibt es eine Möglichkeit

    #include <stdio.h>
    
    struct test
    {
        int x;
    }*p;
    
    int main()
    {
    
    printf ("Wert: ");
    scanf ("%i",&p->x);
    printf ("%i",p->x);
    
    getchar();
     return 0;
    }
    

    zum laufen zu bekommen? 😃

    #include <stdio.h>
    
    int main()
    {
    int y;
    int *z;
    
    z=&y;
    printf ("Wert: ");
    scanf ("%i",z);         //kein & da z bereits auf Adresse von y
    printf ("%i",*z);       //* da Inhalt von Pointer
    
    getchar();
     return 0;
    }
    

    Bei einer Struktur kenne ich leider nur -> Operator...
    wie weise ich eine Adresse zu? 🙂
    schon mal thx 4 help



  • Guest189374 schrieb:

    Was genau macht dann p->x

    Das ist der Wert x bzw. die Variable x der Struktur, auf den der Zeiger p zeigt.

    Guest189374 schrieb:

    wie weise ich eine Adresse zu? 🙂

    Das geht so, wie mit deiner integer Variable, du brauchst den Zeiger hier nicht unbedingt:

    struct test 
    { 
        int x; 
    }testvariable, *testzeiger; 
    
    int main() 
    { 
    	testzeiger = &testvariable;
    	scanf ( "%d", &testzeiger->x );
    	printf("%d\n", testzeiger->x );
    
    // Hier brauchst du den Zeiger nicht, eine 'normale' Variable tuts auch:
    scanf ( "%d", &testvariable.x );
    printf("%d\n", testvariable.x );
    
        return 0; 
    }
    


  • testzeiger = &testvariable;
    Hier bekommt also mein Pointer die Adresse der Struktur zugewiesen?
    Alles klar, also vielen Dank 🙂



  • Guest189374 schrieb:

    testzeiger = &testvariable;
    Hier bekommt also mein Pointer die Adresse der Struktur zugewiesen?
    Alles klar, also vielen Dank 🙂

    Geeeeee - nau!
    Büdde 🙂


Anmelden zum Antworten