30/09/2018, 19:52

Cách dữ liệu được bố trí trong struct và class C/C++

Mình có thử qua một đoạn code để kiểm tra cách tổ chức vùng nhớ các trường trong struct và class.
Kết quả cho thấy các trường khi khai báo theo thứ tự nào thì nó sẽ được sắp xếp vùng nhớ theo thứ tự như vậy.

#include <iostream>
#include <stddef.h>
using namespace std;

class Vertex    {
private:    
    double a;
    float b;
    int c;
        
public:
    Vertex(double x, float y, int z)    {
        a = x, b = y, c = z;
    }
};

int main() {
    
    Vertex v(10, 20, 30);
    
    double *p1 = (double*) (void*)&v;
    cout << *p1  << endl; //10

    float *p2 = (float*) ((void*)&v + sizeof(double));
    cout << *p2 << endl; //20
    
    int *p3 = (int*) ((void*)&v + sizeof(double) + sizeof(float));
    cout << *p3 << endl; //30
    
    return 0;
}

Ở class trên mình khai báo lần lượt 3 trường với 3 kiểu dữ liệu khác nhau, lần lượt
là double -> float -> int.
Mình dùng 3 biến con trỏ với kiểu dữ liệu tương tự trỏ đến 3 vùng nhớ theo thứ tự trên thì lấy được kết quả như mong muốn.

Bài liên quan
0