in C++ se definisco una struttura come questaC allocazione di memoria ++ struct
struct ComplexFloat {
float r;
float i;
};
e dichiaro due variabili come questa
struct ComplexFloat cf;
float *f=(float*)cf;
posso tranquillamente assumere che la seguente condizione sarà sempre vero
(&(cf.r)==&(f[0]) && &(cf.i)==&(f[1]))
?
In altre parole, posso tranquillamente supporre che in una struttura contenente float, i suoi elementi occuperanno posizioni contigue in memoria e saranno ordinati secondo l'ordine in cui compaiono nella definizione della struttura?
Ho provato ed è il caso di gcc 4.8.2 su Ubuntu, voglio solo assicurarmi che sia sempre valido.
Quell'espressione non verrà nemmeno compilata, 'cf' non è un array o un puntatore. –
Se questo è per curiosità accademica, va bene, ma se è per codice di produzione, potresti voler ripensare il tuo design. –
grazie @JoachimPileborg, ho corretto la domanda – oromoiluig