Câu hỏi của tôi là trỏ đến các khối bộ nhớ có kích thước lẻ.Con trỏ C++ có kích thước bit cụ thể
Hãy nói rằng tôi có một struct
tuyên bố như vậy:
typedef struct{
int32 val1 : 29;
int32 val2 : 26;
char val3;
}MyStruct;
Giả tuyên bố các lĩnh vực bit cụ thể trong struct là tuyệt (lý do tại sao chúng tôi muốn sử dụng các lĩnh vực chút không phải là câu hỏi).
Nếu tôi muốn khai báo một con trỏ trỏ đến một trong những lĩnh vực, tôi có thể thử một cái gì đó như thế này:
MyStruct test;
int32 *myPtr = &(test.val1);
Ngoại trừ việc này tạo ra lỗi "lấy địa chỉ của một trường bit không phải là được phép ".
Giả sử rằng chúng tôi muốn, có cách nào chỉ ra các trường đó theo cách này không? Tôi biết rằng C + + có lẽ sẽ pad các lĩnh vực để byte tiếp theo (trong trường hợp này sẽ là 32 bit).
Vì con trỏ "điểm" thành byte, tôi cho rằng hành vi này là bình thường, vì không có cách nào để lưu trữ địa chỉ của một thứ có thể không phải là một byte "hoàn chỉnh". – ereOn
Tôi không tin rằng bạn sẽ thấy bất kỳ phần đệm nào cho các thành viên bitfield có kích thước bit được chỉ định (hoặc ít nhất, bạn không thể chắc chắn về việc nhận được bất kỳ phần nào - nó được triển khai thực hiện). – RichieHindle
@RichieHindle: thực sự, và đối với hầu hết các giá trị nhỏ, sẽ không có đệm, vì đây chính là lý do bitfields được phát minh. – PlasmaHH