trong C++ nếu tôi xác định một cấu trúc như thế nàyC cấp phát bộ nhớ ++ struct
struct ComplexFloat {
float r;
float i;
};
và tôi tuyên bố hai biến như thế này
struct ComplexFloat cf;
float *f=(float*)cf;
Tôi có thể giả định rằng các điều kiện sau đây sẽ luôn luôn đúng
(&(cf.r)==&(f[0]) && &(cf.i)==&(f[1]))
?
Nói cách khác, tôi có thể giả định rằng trong cấu trúc có chứa phao, các phần tử của nó sẽ chiếm vị trí tiếp giáp trong bộ nhớ và sẽ được sắp xếp theo thứ tự xuất hiện trong định nghĩa cấu trúc không?
Tôi đã thử nghiệm và đó là trường hợp với gcc 4.8.2 trên Ubuntu, tôi chỉ muốn đảm bảo rằng nó luôn hợp lệ.
Biểu thức đó thậm chí sẽ không biên dịch, 'cf' không phải là mảng hoặc con trỏ. –
Nếu điều này là dành cho sự tò mò học tập, nó là tốt nhưng nếu nó là dành cho mã sản xuất, bạn có thể muốn suy nghĩ lại thiết kế của bạn. –
cảm ơn @JoachimPileborg, tôi đã sửa câu hỏi – oromoiluig