in C++, wenn ich eine Struktur wie dieseC++ struct Speicherzuordnung
struct ComplexFloat {
float r;
float i;
};
und ich erkläre zwei Variablen wie diese
struct ComplexFloat cf;
float *f=(float*)cf;
definieren kann ich davon ausgehen, sicher, dass die folgende Bedingung immer wahr sein wird
(&(cf.r)==&(f[0]) && &(cf.i)==&(f[1]))
?
Mit anderen Worten, kann ich sicher annehmen, dass in einer Struktur, die floats enthält, ihre Elemente zusammenhängende Positionen im Speicher belegen und in der Reihenfolge angeordnet werden, in der sie in der Definition der Struktur erscheinen?
I getestet und es ist der Fall mit gcc 4.8.2 auf Ubuntu, ich möchte nur sicherstellen, dass es immer gültig ist.
Dieser Ausdruck wird nicht einmal kompiliert, 'cf' kein Array ist oder einen Zeiger. –
Wenn dies für akademische Neugier ist, ist es in Ordnung, aber wenn es für Produktionscode ist, möchten Sie vielleicht Ihr Design überdenken. –
dank @JoachimPileborg, korrigierte ich die Frage – oromoiluig