Hilfe bei Structs
-
Hallo ich hab da zwei strukturen:
struct Katzen{ int nummer; char name[200]; enum gender {Weiblich=0, Maennlich} geschlecht; }; struct CatCollection { struct Katzen Cats[100]; int Anz; }Sammlung;
so weit so gut...
und was is jetzt bei denen der unterschied:
fgets(Sammlung->Cats[Sammlung->Anz].name,MAX,stdin);
fgets(Sammlung->Cats->name,MAX,stdin);- Wozu würde das Sammlung->Anz dienen?
und - Warum benutz ich dann den Punktoperator aber unten denn Pfeiloperator...
funktionieren tut beides
- Wozu würde das Sammlung->Anz dienen?
-
Asfandiari schrieb:
Hallo ich hab da zwei strukturen:
struct Katzen{ int nummer; char name[200]; enum gender {Weiblich=0, Maennlich} geschlecht; }; struct CatCollection { struct Katzen Cats[100]; int Anz; }Sammlung;
so weit so gut...
und was is jetzt bei denen der unterschied:
fgets(Sammlung->Cats[Sammlung->Anz].name,MAX,stdin);
fgets(Sammlung->Cats->name,MAX,stdin);- Wozu würde das Sammlung->Anz dienen?
und - Warum benutz ich dann den Punktoperator aber unten denn Pfeiloperator...
funktionieren tut beides
Hy
Also zu 1.:
Das Sammlung->Anz dient dazu, das du auf das "Anz"-te Elemente in deiner Cats-Auflistung zugreifst. Normalerweise wird darin die Anzahl der _bereits_ vorhanden Einträge gespeichert, und durch den obigen Code-Fragment kommst du auf den nächsten neuen Eintrag.Zu 2.:
Oben benutzt du den Punktoperator weil du mit [] auf ein Objekt direkt verweist und nicht auf eine Addresse.
Unten verweißt du durch das Array "nur" auf eine Addresse (Auch Zeiger genannt) und dadurch musst du den Pfeil-Operator nehmen.Aber um das ganze mit Referenzen, Zeiger und Arrays genauer zu verstehen würd ich dir raten nehm dir ein Buch für Einsteiger zu Hilfe in dennen ist dies meist ausführlich und gut verständlich mit vielen Beispielen erklärt.
Mfg Marco
- Wozu würde das Sammlung->Anz dienen?