Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

hi also next und prev müssen int sein, da sie die speicheradresse ( eine Zahl ) sein sollen das andrer probiere ich mal aus danke

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?

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

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.

wie würde denn dann diese struchtur bei dir aussehen ? und ich habe noch das problem ich bekomem meine nicht gefüllt

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

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.

wie muss das denn dann aussehen?

struct Adressen

{

..

struct Adressen *prev;

struct Adressen *next;

}

oder wie ?

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

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

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.