Struct là gì?
Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 38 trên 63.
Cho đến nay, bạn đã làm việc với các kiểu dữ liệu có sẵn của C như int, float và char. Nhưng nếu bạn cần nhóm các thông tin có liên quan lại với nhau thì sao? Đây là lúc cấu trúc (structure), hay struct, trở nên vô cùng hữu ích.
struct là một kiểu dữ liệu do người dùng định nghĩa, cho phép bạn kết hợp nhiều biến thuộc các kiểu khác nhau dưới cùng một tên. Hãy xem nó như một vùng chứa các thông tin có liên quan với nhau.
Hãy xem xét một hệ thống quản lý hồ sơ học sinh. Thay vì quản lý các biến riêng cho từng thông tin của học sinh, bạn có thể nhóm chúng lại với nhau:
// Thay vì dùng các biến (variable) riêng lẻ:
char student_name[50];
int student_id;
float student_grade;
// Bạn có thể nhóm chúng vào một struct:
struct Student {
char name[50];
int id;
float grade;
};Cách tiếp cận này giúp code của bạn có tổ chức hơn và dễ hiểu hơn. Khi thấy struct Student, bạn sẽ biết ngay rằng nó chứa mọi thông tin thiết yếu về một học sinh. Cấu trúc là những khối xây dựng cơ bản giúp bạn mô hình hóa các thực thể trong thế giới thực trong chương trình, khiến code logic hơn và dễ bảo trì hơn.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng điều khiển
1Nền tảng về con trỏ
Con trỏ là gì?Khai báo con trỏToán tử lấy địa chỉ (&)Toán tử giải tham chiếu (*)Con trỏ NULLÔn tập: kiến thức cơ bản về con trỏ4Dự án: Công cụ xử lý văn bản đơn giản
Tổng quan dự ánĐếm ký tự7Cấu trúc (struct)
Struct là gì?Khai báo structTạo biến structTruy cập thành viên của structKhởi tạo structÔn tập: struct dữ liệu học sinh2Con trỏ và mảng
Tên mảng dưới dạng con trỏPhần tử mảng và con trỏPhép toán con trỏSo sánh con trỏÔn tập: duyệt mảng bằng con trỏ5Con trỏ và hàm
Truyền theo giá trịTruyền con trỏ vào hàmSửa đổi biến qua con trỏVí dụ kinh điển: hoán đổiTruyền mảng vào hàmÔn tập: đối số con trỏ hàm3Mảng ký tự và chuỗi
Chuỗi dưới dạng mảng charKý tự kết thúc nullNhập chuỗi bằng scanfDùng strlen()Dùng strcpy()Dùng strcat()Dùng strcmp()Ôn tập: các hàm xử lý chuỗi cơ bản6Quản lý bộ nhớ
Bộ nhớ ngăn xếp và bộ nhớ heapCấp phát động với malloc()Dùng sizeof() để cấp phátKiểm tra lỗi cấp phátGiải phóng bộ nhớ với free()Cấp phát với calloc()Ôn tập: Mảng động9Dự án: Nhập thông tin liên hệ đơn giản
Định nghĩa struct ContactHàm tạo liên hệTự luyện tập: Trình biên dịch C online