Các mảng vào C có thể chấp nhận được bạn định nghĩa một vài các loại biến hoàn toàn có thể giữ cực hiếm của một vài ba thành phần cùng kiểu dữ liêu. Nhưng lại structure - cấu trúc là một trong loại dữ liệu khác trong ngữ điệu lập trình C, được cho phép bạn kết hợp các tài liệu khác loại nhau.

Bạn đang xem: Bài tập kiểu cấu trúc trong c

Cấu trúc được thực hiện để màn biểu diễn một bạn dạng ghi. Giả sử bạn có nhu cầu lưu trữ quý giá của một cuốn sách trong tủ sách của bạn. Chúng ta có thể lưu trữ các thuộc tính của sách sau đây:

Tiêu đềTác giảChủ đềID (giống như thể mã số sinh viên của bạn)

Định nghĩa một cấu trúc trong C

Để định nghĩa cấu trúc, chúng ta phải áp dụng câu lệnh struct. Câu lệnh struct tư tưởng một kiểu tài liệu mới, với hơn một thành phần trong chương trình của bạn. Dạng bao quát của câu lệnh struct như sau đây:

struct phan dinh nghia thanh vien cau truc; phan dinh nghia thanh vien cau truc; ... Phan dinh nghia thanh vien cau truc; ; Một ten_cau_truc hoàn toàn có thể tùy chọn và một thành phần tư tưởng là các biến thường xuyên như int i, float j hoặc một định nghĩa biến đổi khác …. Tại phần sau cùng của khái niệm cấu trúc, trước vết chấm phẩy, bạn có thể xác định một hoặc các biến kết cấu (tùy chọn). Dưới đây là cách khai báo trở nên structure Book:

struct Books char tieude<50>; char tacgia<50>; char chude<100>; int id; book;

Truy cập các thành phần của kết cấu trong C

Để tầm nã cập bất kỳ thành phần nào của cấu trúc, bạn áp dụng toán tử truy cập phần tử. Dưới đấy là ví dụ mang đến cách áp dụng cấu trúc:

#include #include struct Books char tieude<50>; char tacgia<50>; char chude<100>; int id;;int main( ) struct Books Book1; /* Khai bao Book1 la cua kieu Book */ struct Books Book2; /* Khai bao Book2 la cua kieu Book */ /* thong tin bỏ ra tiet quyen sach thu nhat */ strcpy( Book1.tieude, "Lap trinh C"); strcpy( Book1.tacgia, "Pham Van At"); strcpy( Book1.chude, "Ngon ngớ ngẩn lap trinh C"); Book1.id = 1234567; /* thong tin bỏ ra tiet quyen sach thu hai */ strcpy( Book2.tieude, "Toi chũm hoa vang tren teo xanh"); strcpy( Book2.tacgia, "Nguyen Nhat Anh"); strcpy( Book2.chude, "Van hoc"); Book2.id = 6677028; /* hien thi thong tin Book1 */ printf( "Tieu de cua Book1 la: %s ", Book1.tieude); printf( "Tac gia cua Book1 la: %s ", Book1.tacgia); printf( "Chu de cua Book1 la: %s ", Book1.chude); printf( "ID cua Book1 la: %d ", Book1.id); /* hien thi thong tin Book2 */ printf( "Tieu de cua Book2 la: %s ", Book2.tieude); printf( "Tac gia cua Book2 la: %s ", Book2.tacgia); printf( "Chu de cua Book2 la: %s ", Book2.chude); printf( "ID cua Book2 la: %d ", Book2.id); printf(" =========================== "); printf("dichvu4gviettel.com.vn chuc cac ban hoc tot! "); return 0;Biên dịch và chạy chương trình C trên sẽ mang đến kết quả:

*

Các kết cấu như những tham số hàm

Bạn hoàn toàn có thể đặt cấu trúc như một thông số của hàm theo cách dễ dãi như những biến khác hay con trỏ. Truy cập biến cấu trúc như ví dụ dưới đây:

#include #include struct Books char tieude<50>; char tacgia<50>; char chude<100>; int id;;/* khai bao mê say */void inthongtinsach( struct Books book );int main( ) struct Books Book1; /* Khai bao Book1 la cua kieu Book */ struct Books Book2; /* Khai bao Book2 la cua kieu Book */ /* thong tin đưa ra tiet quyen sach thu nhat */ strcpy( Book1.tieude, "Lap trinh C"); strcpy( Book1.tacgia, "Pham Van At"); strcpy( Book1.chude, "Ngon ngây ngô lap trinh C"); Book1.id = 1234567; /* thong tin bỏ ra tiet quyen sach thu nhì */ strcpy( Book2.tieude, "Toi thế hoa vang tren teo xanh"); strcpy( Book2.tacgia, "Nguyen Nhat Anh"); strcpy( Book2.chude, "Van hoc"); Book2.id = 6677028; /* hien thi thong tin Book1 */ inthongtinsach( Book1 ); /* hien thi thong tin Book2 */ inthongtinsach( Book2 ); printf(" =========================== "); printf("dichvu4gviettel.com.vn chuc cac ban hoc tot! "); return 0;void inthongtinsach( struct Books book ) printf( "Tieu de sach: %s ", book.tieude); printf( "Tac gia: %s ", book.tacgia); printf( "Chu de: %s ", book.chude); printf( "Book ID: %d ", book.id);Biên dịch với chạy chương trình C trên sẽ cho kết quả:

*

Con trỏ tới cấu trúc

Bạn hoàn toàn có thể định nghĩa nhỏ trỏ cấu tạo theo cách chúng ta định nghĩa các loại nhỏ trỏ khác ví như sau:

struct Books *struct_pointer;Bây giờ bạn có thể lưu địa chỉ của biến cấu tạo trong biến bé trỏ được có mang ở trên. Để tìm add của một vươn lên là cấu trúc, đặt toán tử & trước tên cấu trúc như sau:

struct_pointer = &Book1;Để truy vấn vào thành phần của một structure thực hiện con trỏ tới structure đó, chúng ta phải thực hiện toán tử -> như sau:

struct_pointer->tieude;Bây giờ họ viết lại ví dụ trên áp dụng con trỏ cấu trúc, mong muốn điều này sẽ dễ dàng cho bạn để hiểu khái niệm này:

#include #include struct Books char tieude<50>; char tacgia<50>; char chude<100>; int id;;/* khai bao si */void inthongtinsach( struct Books *book );int main( ) struct Books Book1; /* Khai bao Book1 la cua kieu Book */ struct Books Book2; /* Khai bao Book2 la cua kieu Book */ /* thong tin đưa ra tiet quyen sach thu nhat */ strcpy( Book1.tieude, "Lap trinh C"); strcpy( Book1.tacgia, "Pham Van At"); strcpy( Book1.chude, "Ngon dại lap trinh C"); Book1.id = 1234567; /* thong tin bỏ ra tiet quyen sach thu nhì */ strcpy( Book2.tieude, "Toi núm hoa vang tren co xanh"); strcpy( Book2.tacgia, "Nguyen Nhat Anh"); strcpy( Book2.chude, "Van hoc"); Book2.id = 6677028; /* in thong tin Book1 bang cach truyen dia đưa ra cua Book1 */ inthongtinsach( &Book1 ); /* in thong tin Book2 bang cach truyen dia đưa ra cua Book2 */ inthongtinsach( &Book2 ); printf(" =========================== "); printf("dichvu4gviettel.com.vn chuc cac ban hoc tot! "); return 0;void inthongtinsach( struct Books *book ) printf( "Tieu de sach: %s ", book->tieude); printf( "Tac gia: %s ", book->tacgia); printf( "Chu de: %s ", book->chude); printf( "Book ID: %d ", book->id);Biên dịch cùng chạy công tác C trên sẽ cho kết quả:

*

Các trường bit (Bit Fields) trong C

Các trường bit được cho phép đóng gói dữ liệu trong một cấu trúc. Nó giúp tối ưu hóa bộ nhớ.

Xem thêm:

C cho phép bạn triển khai điều này trong một định nghĩa kết cấu bởi vấn đề đặt: độ dài bit sau biến. Ví dụ:

struct packed_struct unsigned int f1:1; unsigned int f2:1; unsigned int f3:1; unsigned int f4:1; unsigned int type:4; unsigned int my_int:9; pack;Ở đây, packed_struct chứa 6 phần tử: 4 bộ phận f1..f4 là một trong bit, một type là 4 bit cùng một my_int 9 bit.

C auto đóng gói các trường bit trên càng gọn càng tốt, miễn là chiều dài về tối đa của trường này bé dại hơn hoặc bằng với chiều nhiều năm từ nguyên của dòng sản phẩm tính. Bạn sẽ tìm hiểu về những trường bit vào một chương riêng.