Struct
Struct là một nhóm của các thành viên, mỗi thành viên có một kiểu dữ liệu khác nhau.
Ví dụ ta mô tả sản phẩm với các thuộc tính là cân nặng và giá.
|
|
Struct với typedef
Để bỏ với từ khóa struct
khi mô tả struct chúng ta nên sử dụng từ khóa typedef
.
|
|
hoặc sử dụng cách viết ngắn gọn với typedef
|
|
Khởi tạo và gán giá trị cho struct
Từ chuẩn C99, chúng ta có thể khai báo và gán ngay giá trị cho struct như sau.
|
|
Truy cập các thành viên của struct
Sử dụng dấu chấm .
để đọc và ghi các thành viên của struct.
|
|
Struct lồng nhau
Struct được coi như một kiểu dữ liệu nên có thể thoải mái khai báo struct lồng nhau.
|
|
Struct với con trỏ
Để truy cập các thành viên struct của con trỏ thì chúng ta sử dụng toán tử ->
|
|
Căn chỉnh struct (Struct alignment)
Trong các CPU máy tính hiện nay thì việc đọc và ghi dữ liệu hiệu quả khi dữ liệu được căn chỉnh tự nhiên. Ví dụ trên các máy tính 64 bit, dữ liệu sẽ được đọc và ghi 64 bit một lượt. Nên kích cỡ dữ liệu struct cũng nên là bội số của 64 bit (8 bytes).
Với struct trong C, thì nó được căn chỉnh dựa trên kích cỡ của member lớn nhất. Ví dụ struct stu_a
dưới đây khi khai báo sẽ có 5 bytes, vì 5 là số lẻ nên nó được trình biên dịch căn chỉnh lại thành 8 bytes.
|
|
Trình biên dịch tự động bù vào kiểu dữ liệu trên như sau:
|
|