Ich habe eine Definition Prüfung struct wie folgt:Zugriff auf Strukturkomponenten direkt
struct test{
int a, b, c;
bool d, e;
int f;
long g, h;
};
Und irgendwo ich es auf diese Weise verwenden:
test* t = new test; // create the testing struct
int* ptr = (int*) t;
ptr[2] = 15; // directly manipulate the third word
cout << t->c; // look if it really affected the third integer
Dies funktioniert korrekt auf meinem Windows - es 15 druckt wie erwartet aber ist es sicher? Kann ich wirklich sicher sein, dass die Variable an Ort und Stelle im Speicher ist, den ich möchte - besonders im Fall solcher kombinierter Strukturen (zum Beispiel ist f auf meinem Compiler das fünfte Wort, aber es ist eine sechste Variable)?
Wenn nicht, gibt es eine andere Möglichkeit, Strukturelemente direkt zu manipulieren, ohne tatsächlich im Konstruktor das Konstrukt struct-> member zu haben?
Dies scheint zu sein, was ich gesucht habe, danke –
Danke eine Million. Ich wusste nicht "offsetof"! Ich habe mich in den letzten 6 Jahren selbst C++ Programmierer genannt. –
Der 'offsetof'-Trick ruft undefiniertes Verhalten auf. –