2010-06-13 23 views

Trả lời

12

Vâng, theo 6.7.2.1, "Trong vòng một đối tượng cấu trúc, các thành viên phi bit trường và các đơn vị trong đó các trường bit nằm trong đó có các địa chỉ tăng theo thứ tự mà chúng được khai báo. đơn vị trong đó nó cư trú), và ngược lại. Có thể có đệm không tên trong một đối tượng cấu trúc, nhưng không phải lúc ban đầu. "

+1

Tôi không thích từ ngữ 'được chuyển đổi phù hợp'. Nó cho ấn tượng mối quan hệ này có thể bị phá vỡ bởi phôi (hoặc thiếu). –

+0

@James: Từ ngữ đơn giản là do sự khác biệt về loại phải tồn tại giữa một con trỏ đến một cấu trúc và một con trỏ đến thành viên đầu tiên của cấu trúc. –

1

Có.

Không được có bất kỳ phần đệm nào ở phía trước thành viên đầu tiên.

Địa chỉ của cấu trúc giống với địa chỉ của thành viên đầu tiên của nó, miễn là sử dụng dàn diễn viên phù hợp.

resource

5

Không thể tìm thấy nó trong các tiêu chuẩn C, nhưng câu trả lời là "có" - cáC++ Chuẩn C nói:

Một con trỏ tới một đối tượng POD-struct, phù hợp chuyển đổi sử dụng số reinterpret_cast, trỏ tới thành viên ban đầu (hoặc nếu thành viên đó là trường bit , sau đó đến đơn vị trong đó nó nằm) và ngược lại. [Lưu ý: Do đó, có thể không có tên đệm đệm trong đối tượng POD-struct, nhưng không ở đầu, khi cần thiết để đạt được căn chỉnh phù hợp. ]

Như C và C++ POD đối tượng phải phù hợp, cùng phải đúng cho C.

Các vấn đề liên quan