huutsch Geschrieben 15. Mai 2003 Geschrieben 15. Mai 2003 Hallo ich habe folgenden Struct struct ADRESSEN *adr; struct ADRESSEN { int pos; char Name[30]; char Vorname[20]; .... int next; int prev; } DIeses soll eine dynamische liste werden, soadass undendlich vile adressen gespeichert werden können. Bitte schauht mal ob das richtig ist mir kommt es vor als ob ein fehler dadrin ist und dann noch eine frage wie mussd er malloc befehl dazu sein zum speicherreservieren? mfg und danke schonmal alex Zitieren
Klotzkopp Geschrieben 15. Mai 2003 Geschrieben 15. Mai 2003 next und prev müssen vom Typ struct ADRESSEN* sein, sonst bekommst du damit keine Verkettung hin. Du brauchst ja einen Zeiger auf die nächste/vorherige Struktur. Außerdem solltest du die struct-Deklaration mit einem Semikolon abschließen. Speicher reservieren: struct ADRESSEN* neueAdresse = malloc( sizeof( struct ADRESSEN ) ); Zitieren
huutsch Geschrieben 15. Mai 2003 Autor Geschrieben 15. Mai 2003 hi also next und prev müssen int sein, da sie die speicheradresse ( eine Zahl ) sein sollen das andrer probiere ich mal aus danke Zitieren
huutsch Geschrieben 15. Mai 2003 Autor Geschrieben 15. Mai 2003 danke für den malloc es funkt aber wie kann ich denn dann z.b die einzelnen feler mit sinn füllen also ich habe versuche adr.name[1]= a wieso geht es nicht? Zitieren
Klotzkopp Geschrieben 15. Mai 2003 Geschrieben 15. Mai 2003 Original geschrieben von huutsch hi also next und prev müssen int sein, da sie die speicheradresse ( eine Zahl ) sein sollenDas verstehe ich nicht. Für "Speicheradressen" verwendet man Zeiger, keine ints. Was hast du mit den ints vor? Zitieren
huutsch Geschrieben 15. Mai 2003 Autor Geschrieben 15. Mai 2003 also die ints sollen auf den speicherpalzt verweisen also sind es eigetlich nur zahlen, welche für die position des nächsten oder des voherigen feldes stehen Zitieren
Klotzkopp Geschrieben 15. Mai 2003 Geschrieben 15. Mai 2003 Original geschrieben von huutsch also die ints sollen auf den speicherpalzt verweisen also sind es eigetlich nur zahlen, welche für die position des nächsten oder des voherigen feldes stehen Meinst du jetzt mit "Position" eine Art Index, also von Null bis irgendwas, oder die tatsächliche Speicheradresse? Falls ersteres: Das ist Unsinn, denn der nächste Index ist der eigene Index + 1, also redundant. Falls letzteres: Für Speicheradressen verwendet man Zeiger, keine Integer, auch wenn beides letztendlich Zahlen sind. Du kannst dich z.B. nicht darauf verlassen, dass ein int genauso groß ist wie ein struct ADRESSEN*. Außerdem erschwert es die Verwendung der Liste, weil du ständig casts machen musst. Und damit untergräbst du die Sicherheit, die dir die Typstrenge bietet. Zitieren
huutsch Geschrieben 15. Mai 2003 Autor Geschrieben 15. Mai 2003 wie würde denn dann diese struchtur bei dir aussehen ? und ich habe noch das problem ich bekomem meine nicht gefüllt Zitieren
huutsch Geschrieben 15. Mai 2003 Autor Geschrieben 15. Mai 2003 das int soll uch nur die adresse sein allerdings ohne dirketen verweis also nur die nummer des blockes vo die nächten Informationne drinnen stehen das sollte so funktionieren, das ich später in der lage bin zu sagen adr = prev Zitieren
Klotzkopp Geschrieben 15. Mai 2003 Geschrieben 15. Mai 2003 Original geschrieben von huutsch das int soll uch nur die adresse sein allerdings ohne dirketen verweis also nur die nummer des blockes vo die nächten Informationne drinnen stehen das sollte so funktionieren, das ich später in der lage bin zu sagen adr = prev Und damit das geht, muss prev ein struct ADRESSEN* sein, denn adr ist ja auch einer. Du musst in deiner Struktur einfach nur den Typ von prev und next von int auf struct ADRESSEN* ändern, dann kannst du die Liste aufbauen. Zitieren
huutsch Geschrieben 15. Mai 2003 Autor Geschrieben 15. Mai 2003 wie muss das denn dann aussehen? struct Adressen { .. struct Adressen *prev; struct Adressen *next; } oder wie ? Zitieren
huutsch Geschrieben 15. Mai 2003 Autor Geschrieben 15. Mai 2003 wie kann ich denn dann die anderen felder füllen ich habe es versucht mit adr.pos = 11 aber er gibt mir d einen fhler heraus Zitieren
Klotzkopp Geschrieben 15. Mai 2003 Geschrieben 15. Mai 2003 Dann zeig doch bitte mal den ganzen Code und den genauen Text der Fehlermeldung. Zitieren
huutsch Geschrieben 15. Mai 2003 Autor Geschrieben 15. Mai 2003 also nimme den struct von oben dort habe ich dann gesagt struct ADRESSEN *adr; adr = malloc(sizeof(structADRESSEN)); so dann habe ich versuche in dem int feld pos der struktur eine zahl zu speichern: adr.pos=11; borland sagt E2294 Structure required on left side of. or.* Zitieren
Klotzkopp Geschrieben 15. Mai 2003 Geschrieben 15. Mai 2003 Original geschrieben von huutsch so dann habe ich versuche in dem int feld pos der struktur eine zahl zu speichern: adr.pos=11; borland sagt E2294 Structure required on left side of. or.* Da hat er recht adr ist ein Zeiger, also musst du den den Pfeiloperator verwenden: adr->pos = 11; Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.