Khai báo struct
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 39 trên 63.
Bây giờ bạn đã hiểu struct là gì, đã đến lúc học cách tạo kiểu cấu trúc của riêng mình. Khai báo struct trong C tuân theo một cú pháp cụ thể, dùng để xác định khuôn mẫu cho kiểu dữ liệu tùy chỉnh của bạn.
Cú pháp cơ bản để khai báo một struct là:
struct StructureName {
datatype member1;
datatype member2;
// ... thêm các thành viên khác
};Cách hoạt động của từng phần như sau: bạn bắt đầu bằng từ khóa struct, tiếp theo là tên cấu trúc, rồi liệt kê tất cả biến thành viên trong dấu ngoặc nhọn. Mỗi thành viên được khai báo giống như một biến thông thường, với kiểu dữ liệu và tên. Đừng quên dấu chấm phẩy sau dấu ngoặc nhọn đóng!
Ví dụ, để tạo một cấu trúc biểu diễn một điểm trong không gian 2D:
struct Point {
int x;
int y;
};Khai báo này tạo một kiểu dữ liệu mới có tên struct Point, gồm hai thành viên kiểu số nguyên: x và y. Sau khi khai báo, bạn có thể dùng kiểu cấu trúc này trong toàn bộ chương trình để tạo các biến lưu thông tin tọa độ một cách có tổ chức.
Thử thách
DễTạo một chương trình C khai báo struct để biểu diễn một cuốn sách trong hệ thống thư viện. Chương trình cần:
- Khai báo
structcó tênBook, chứa các thành viên sau:- Một số nguyên
idđể lưu mã số của cuốn sách - Một mảng ký tự
titlecó kích thước 50 để lưu tiêu đề cuốn sách - Một số nguyên
pagesđể lưu số trang - Một số thực
priceđể lưu giá cuốn sách
- Một số nguyên
- Sau khi khai báo struct, in thông báo xác nhận:
Book struct defined successfully! - Dùng toán tử
sizeof()để in kích thước của structBooktính bằng byte, theo định dạng:Size of Book struct: [size] bytes - In kích thước của từng thành viên:
Size of id: [size] bytesSize of title: [size] bytesSize of pages: [size] bytesSize of price: [size] bytes
Thử thách này kiểm tra mức độ hiểu của bạn về cú pháp khai báo struct, bao gồm cách dùng từ khóa struct đúng cách, khai báo thành viên với kiểu dữ liệu phù hợp và đặt dấu chấm phẩy sau dấu ngoặc nhọn đóng. Bạn cũng sẽ tìm hiểu cách C cấp phát bộ nhớ cho các thành viên của struct bằng toán tử sizeof().
Lưu ý rằng kích thước chính xác có thể thay đổi tùy theo kiến trúc hệ thống, nhưng cú pháp định nghĩa struct phải chính xác để chương trình biên dịch và chạy thành công.
Tự làm thử
#include <stdio.h>
int main() {
// TODO: Định nghĩa struct Book tại đây
// In ra thông báo xác nhận
printf("Book struct defined successfully!\n");
// TODO: In ra kích thước của struct Book và các thành viên của nó
return 0;
}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