Verständnisfrage zu list_for_each
-
Hallo,
erstmal ein großartiges Kompliment für dieses Forum und die Beiträge hier haben mir unendliche Male geholfen mit C++ klarzukommen.
Zu meinem Problem:Hab hier eine Datei und die struct wie diese einzulesen ist. Ich kriege auch einiges daraus aber an einem Punkt hackt es noch.
Die Struct sieht in etwa folgendermaßen aus:struct list_st {
int x;
int y;
...
int anz_xx;
struct xx_type xx;
}struct xx_type {
struct list_head list; //verekettet liste
int a;
int b;
...
struct zz_type *zz;
}struct zz_type zz {
...
}So ich krieg die Infos bis auf die xx-struct. Wenn ich im Debugger xx nachschaue sehe ich nichts vernünftiges drinnen. Habe versucht mit list_for_each() an die Daten zu kommen was auch nichts brachte.
Ausserdem ist es mir nicht klar wie mit diesen Pointern innerhalb der zweiten Struct umzugehen ist.Bin für jede Antwort dankbar.
-
Was willst du genau? An einen Member einer
structgelangen?Drück dich bitte verständlicher aus, benutze CPP-Tags und schreibe kompilierbaren Code, sodass man dein Problem nachvollziehen kann. Und was soll
list_for_eachsein?
-
also:
bleibt ein pointer konsistent wenn eine struct mit diesem pointer gespeichert und wieder geladen wird?struct person {
int x;
int y;
int *zeiger_auf_ietw; <-- also der hier
}
-
Das sieht sehr nach C Code aus, gepaart mit mangelnden Grundlagen.

Ein struct, wie man es in C++ macht:
struct list { list () //ctor - Konstruktor : x(0), //schön initialisieren y(0), //auch hier p(0) //wird ebenfalls 0-initialisiert {} int x; int y; int* p; }; // hier ein semikolon //und jetzt noch eine Instanz erzeugen: list l; //merke kein struct voredran und jetzt wird hier der ctor aufgerufenWenn keine Initialisierung stattfindet, und auch keine Zuweisung ist in dern Variablen ein zufälliges Muster.
-
chemstar schrieb:
also:
bleibt ein pointer konsistent wenn eine struct mit diesem pointer gespeichert und wieder geladen wird?Speichern und laden, hat das etwas mit Dateien zu tun? Oder meinst du eher schreiben und lesen?
Der Zeiger behält seinen Wert, bis du ihn änderst oder das Objekt zerstört wird. Das Objekt, auf das gezeigt wird, muss aber nicht zu jedem Zeitpunkt gültig sein.
-
chemstar schrieb:
also:
bleibt ein pointer konsistent wenn eine struct mit diesem pointer gespeichert und wieder geladen wird?struct person {
int x;
int y;
int *zeiger_auf_ietw; <-- also der hier
}Natürlich nicht. Der Zeiger zeigt auf eine Speicherstelle, wo wasauchimmer gespeichert ist. Wenn Du das in einer Datei speicherst, das Programm beendest und neu startest, ist der Zeigerwert wieder derselbe, aber das worauf er zeigen soll, steht mit an Sicherheit grenzender Wahrscheinlichkeit woanders im Speicher.