Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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 ) );

Geschrieben

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?

Geschrieben
Original geschrieben von huutsch

hi also next und prev müssen int sein, da sie die speicheradresse ( eine Zahl ) sein sollen

Das verstehe ich nicht. Für "Speicheradressen" verwendet man Zeiger, keine ints. Was hast du mit den ints vor?
Geschrieben

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

Geschrieben
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.

Geschrieben

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

Geschrieben
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.
Geschrieben

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.*

Geschrieben
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;

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...