pointer auf struct



  • Hallo,

    wie kann ich auf das erste element der struct Struct_Bsp mit einem pointer zugreifen?

    struct _Struct_Bsp {
    
    	unsigned int a; 
    	unsigned int b; 
    
    }
    
    struct _Struct_Bsp Struct_Bsp[] = {
    
    	{1,2}, 
    	{3,4}
    };
    

    der pointer wäre z.B.

    Struct_Bsp *ptr;
    

    -> so dass ich z.B. mit ptr->a 3 und mit ptr->b 4 als ergebnis bekomme

    mfg
    martin



  • _Struct_Bsp *ptr = Struct_Bsp;
    

    Dann zeigt der Pointer auf dein Array
    Und so kanst du auf das erste Element zugreifen

    ptr[0].a
    ptr[0].b
    

    So auf das zweite

    ptr[1].a
    ptr[1].b
    


  • Hallo,

    danke für deine Antwort.

    ist es auch möglich auf

    ptr[0]
    

    mit dem Pointer zeigen zu können?

    Also so, dass ich dann lediglich noch

    ptr->a
    

    sagen muss und nicht erst noch das richtige Array-Element

    ptr[array-element].a
    

    aussuchen muss?

    gruß
    martin



  • martin_jürgen schrieb:

    Also so, dass ich dann lediglich noch

    ptr->a
    

    sagen muss und nicht erst noch das richtige Array-Element ptr[array-element].a aussuchen muss?

    Wenn du unbedingt

    ->
    

    operator benutzen moechtest, solltest du einen Block wie
    dieses verwenden:

    int first_a, first_b, second_a, second_b ;
    _Struct_Bsp *ptr = Struct_Bsp;	
    
    first_a = ptr->a ;
    first_b = ptr->b ;
    ptr++ ;   /* bewege den zeiger zu dem naechsten struct element */
    second_a = ptr->a ;
    second_b = ptr->b ;
    

    Um Faults zu vermeiden, solltest du allerdings genau wissen wie viele Elements
    bzw wie viel mals inkrementiert werden muss. Wenn du zur Laufzeit solche Listen
    erstellst und statisch nicht bestimmen kannst wie viele Elemente ein Array
    besitzen soll, dann empfehle ich dir eine "simple linked List" zu schreiben.

    Gruss,



  • kann man auch einfach über die Adresse arbeiten???

    ptr = &Struct_Bsp[index];
    

    und anschließend einfach nur schreiben

    ptr->a
    

    und man hat das richtige element ausgewählt???

    Interessiert mich, da ich vor einem ähnlichen Problem stehe...

    mfg
    ~0



  • das ist richtig, und ausserdem ist das mein unreg nick du klauer :p


Anmelden zum Antworten