
Struct và Union là công cụ mạnh mẽ để tạo ra các kiểu dữ liệu tùy chỉnh trong C. Struct giúp tổ chức dữ liệu có cấu trúc, trong khi Union tối ưu bộ nhớ bằng cách chia sẻ không gian lưu trữ. Hiểu rõ cả hai là bước quan trọng để xây dựng ứng dụng phức tạp.
Struct và Union là hai kiểu dữ liệu do người dùng định nghĩa (user-defined data types) trong C, cho phép nhóm nhiều biến có kiểu dữ liệu khác nhau lại với nhau. Chúng giúp tổ chức dữ liệu một cách có cấu trúc, dễ quản lý và tối ưu hiệu suất.
Quảng cáo giúp chúng tôi duy trì trang web này
Tổng quan về Struct
Khái niệm Struct
Struct (cấu trúc) là một kiểu dữ liệu cho phép nhóm nhiều biến có kiểu dữ liệu khác nhau dưới một tên duy nhất. Mỗi biến trong struct được gọi là thành phần (member).
Cú pháp định nghĩa Struct
Ví dụ thực tế:
Khởi tạo Struct
Khởi tạo khi khai báo
Truy cập thành phần Struct
Sử dụng toán tử dấu chấm (.)
Typedef với Struct
Sử dụng typedef để tạo alias
Struct lồng nhau (Nested Structures)
Struct và hàm
Truyền struct vào hàm
Trả về struct từ hàm
Mảng Struct
Union
Khái niệm Union
Union tương tự như struct, nhưng tất cả các thành phần chia sẻ cùng một vùng nhớ. Chỉ có thể sử dụng một thành phần tại một thời điểm.
Định nghĩa Union
Ví dụ Union:
So sánh Struct và Union
Con trỏ Struct
Ví dụ thực hành
1. Quản lý thông tin sách
2. Quản lý điểm số sinh viên
Tổng kết
Struct và Union là những công cụ mạnh mẽ để tổ chức dữ liệu phức tạp và tối ưu bộ nhớ trong C.
- Struct: Tổng kích thước = tổng kích thước các thành phần + padding
- Union: Kích thước = kích thước thành phần lớn nhất
- Memory alignment: Cẩn thận với padding khi làm việc với binary data
- Union safety: Chỉ truy cập thành phần cuối cùng được gán giá trị
- Sử dụng typedef để tạo tên ngắn gọn cho struct
- Nhóm các thành phần liên quan trong struct
- Sử dụng union khi cần tiết kiệm bộ nhớ
- Cẩn thận với con trỏ trong struct (cần giải phóng bộ nhớ)
Với những kiến thức này, bạn đã sẵn sàng để xây dựng các kiểu dữ liệu phức tạp và tiếp tục khám phá các cấu trúc dữ liệu nâng cao như linked list, tree, graph!
Last updated on