Struktur
-
folgende Frage:
Ich habe Variablen von versch. Variablentypen welche ich in eine Struktur abfüllen möchte. Von der Struktur weiss ich in welcher Reihenfolge welche Variablentypen kommen und welche grösse die haben (zb von den Arrays). Ich kenne aber die Namen nicht der einzelnen Variablen in der Struktur, habe nur den Pointer auf die Struktur.
Ist die Adresse des Pointers die Gleiche wie die erste Variable in der Struktur? und wäre es dann möglech (angenommen die erste Variable in der Struktur wäre ein int) mit dem pointer + 4 (angenommen ein standart 32 bit prozessor) auf die zweite Variable zuzugreifen?Oder gibt es da in C eine andere Vorgehensweise/Syntax?
-
Mir ist nicht so recht ersichtlich, was du genau vorhast. Aus welchem Grund kennst du denn die Namen der Strukturelemente nicht? Kannst du nicht in dem Fall ein Array benutzen in dem Struct
Laut Standard ist es jedenfalls nicht definiert, dass der Strukturpointer identisch mit dem ersten Element sein muss, also solltest du dich besser nicht darauf verlassen.
-
ich verstehe kein Wort, was du da fragst/machen willst.
-
Hi,
masterofx32 schrieb:
Laut Standard ist es jedenfalls nicht definiert, dass der Strukturpointer identisch mit dem ersten Element sein muss, also solltest du dich besser nicht darauf verlassen.
Ich mag mich irren, aber ist das nicht in C doch der Fall? Garantiert ist es imho nur in C++ nicht, sobald es sich nicht um eine POD Struktur handelt.
BTW: Dein Name ist falsch.
-
Zitat aus dem C99 Standard Seite 103.
[...] A pointer to a
structure object, suitably converted, points to its initial member (or if that member is a
bit-field, then to the unit in which it resides), and vice versa. There may be unnamed
padding within a structure object, but not at its beginning.
-
masterofx32 schrieb:
Laut Standard ist es jedenfalls nicht definiert, dass der Strukturpointer identisch mit dem ersten Element sein muss, also solltest du dich besser nicht darauf verlassen.
Da frage ich mich welchen Standard du hier meinst. Meiner (ISO/IEC 9899:1999 aka C99) sagt:
Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning.
EDIT: lol, gleichzeitig dieselbe Passage gepostet *g*
-
CarstenJ schrieb:
Hi,
Ich mag mich irren, aber ist das nicht in C doch der Fall? Garantiert ist es imho nur in C++ nicht, sobald es sich nicht um eine POD Struktur handelt.Hmm, in Ordnung, da hab ich mich wohl geirrt
Ich hatte es anders in Erinnerung. Fakt ist jedenfalls, dass man laut C-Standard mit pMeinStruct+4 nicht auf die zweite Integervariable in dem Struct kommt.CarstenJ schrieb:
BTW: Dein Name ist falsch.
Wessen Name ist falsch?
-
Hi,
ich dachte deiner. Sollte es nicht masterfox32 heissen?!
-
CarstenJ schrieb:
Hi, ich dachte deiner. Sollte es nicht masterfox32 heissen?!
Nö, soll "master of x32" heißen
-
Ah so. Naja, ergibt natürlich auch Sinn.