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 zugreifenptr[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