Tôi đã một struct định nghĩa là:Tại sao offsetof (thành viên) bằng sizeof (struct)?
struct smth
{
char a;
int b[];
};
Khi tôi gọi sizeof
và offsetof
trên struct này:
cout << sizeof(struct smth) << endl;
cout << offsetof(struct smth, b) << endl;
Output là:
4
4
Tại sao khi kích thước của stuct là 4 và char đang sử dụng 1 byte, độ lệch của mảng int là 4? Tại sao có một số loại đệm? Ngoài ra, tại sao mảng int không chiếm bất kỳ không gian nào?
Bạn có nghĩa là 'offsetof (struct smth, b)', phải không? –
@CarlNorum Vâng, tôi có. Đã chỉnh sửa. – bugra
Có phải C hoặc C++ không? Họ khác nhau. –