Struct là gì

Các mảng vào C cho phép các bạn khái niệm một vài loại biến chuyển hoàn toàn có thể giữ giá trị của một vài nhân tố thuộc hình dạng dữ liêu. Nhưng structure - cấu trúc là 1 nhiều loại tài liệu khác vào ngữ điệu lập trình sẵn C, có thể chấp nhận được chúng ta phối hợp các dữ liệu khác giao diện nhau.

Bạn đang xem: Struct là gì

Cấu trúc được sử dụng để biểu diễn một bạn dạng ghi. Giả sử bạn có nhu cầu lưu trữ giá trị của một quyển sách trong thư viện của công ty. quý khách hoàn toàn có thể lưu trữ những trực thuộc tính của sách sau đây:

Tiêu đềTác giảChủ đềID (hệt như là mã số sinch viên của bạn)

Định nghĩa một cấu tạo vào C

Để khái niệm cấu trúc, các bạn đề nghị áp dụng câu lệnh struct. Câu lệnh struct định nghĩa một đẳng cấp dữ liệu new, với trên một thành phía bên trong lịch trình của bạn. Dạng tổng thể của câu lệnh struct nhỏng sau đây:

struct phan dinc nghia thanh vien cau truc; phan dinh nghia thanh hao vien cau truc; ... phan dinch nghia thanh vien cau truc; ; Một ten_cau_truc rất có thể tùy lựa chọn với một thành phần tư tưởng là những biến thường nlỗi int i, float j hoặc một quan niệm thay đổi khác …. Tại phần sau cuối của định nghĩa cấu trúc, trước vệt chnóng phẩy, chúng ta cũng có thể khẳng định một hoặc nhiều biến đổi cấu tạo (tùy chọn). Dưới đây là biện pháp knhì báo biến structure Book:

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

Truy cập các nguyên tố của cấu tạo vào C

Để truy cập ngẫu nhiên nhân tố nào của cấu trúc, bạn sử dụng tân oán tử truy vấn phần tử. Dưới đó là ví dụ mang đến bí quyết thực hiện cấu trúc:

#include #include struct Books char tieude<50>; char tacgia<50>; char chude<100>; int id;;int main( ) struct Books Book1; /* Knhị bao Book1 la cua kieu Book */ struct Books Book2; /* Knhì bao Book2 la cua kieu Book */ /* thong tin bỏ ra tiet quyen sach thu nhat */ strcpy( Book1.tieude, "Lap trinc C"); strcpy( Book1.tacgia, "Pmê say Van At"); strcpy( Book1.chude, "Ngon ngớ ngẩn lap trinc C"); Book1.id = 1234567; /* thong tin chi tiet quyen sach thu hai */ strcpy( Book2.tieude, "Toi nỗ lực hoa vang tren co 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("Hoclaptrinc chuc cac ban hoc tot! "); return 0;Biên dịch cùng chạy lịch trình C trên sẽ mang đến kết quả:

*

Các kết cấu nlỗi những tđam mê số hàm

quý khách có thể đặt cấu trúc như một tmê say số của hàm Theo phong cách tiện lợi nhỏng những vươn lên là khác xuất xắc con trỏ. Truy cập trở thành kết cấu nhỏng ví dụ dưới đây:

#include #include struct Books char tieude<50>; char tacgia<50>; char chude<100>; int id;;/* khai bao si mê */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 chi tiet quyen sach thu nhat */ strcpy( Book1.tieude, "Lap trinc C"); strcpy( Book1.tacgia, "Pđam mê Van At"); strcpy( Book1.chude, "Ngon dở người lap trinc C"); Book1.id = 1234567; /* thong tin đưa ra tiet quyen sach thu hai */ strcpy( Book2.tieude, "Toi cố gắng 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("Hoclaptrinc 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 công tác C trên sẽ mang đến kết quả:

*

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

Quý Khách hoàn toàn có thể quan niệm nhỏ trỏ kết cấu Theo phong cách các bạn quan niệm các loại nhỏ trỏ khác như sau:

struct Books *struct_pointer;Bây giờ bạn cũng có thể giữ can dự của thay đổi kết cấu trong phát triển thành bé trỏ được định nghĩa sinh sống trên. Để tìm kiếm liên tưởng của một trở thành kết cấu, đặt toán thù tử & trước tên cấu tạo nhỏng sau:

struct_pointer = &Book1;Để truy cập vào nguyên tố của một structure áp dụng bé trỏ tới structure kia, bạn bắt buộc thực hiện tân oán tử -> nlỗi sau:

struct_pointer->tieude;Bây giờ đồng hồ họ viết lại ví dụ bên trên thực hiện nhỏ trỏ cấu tạo, mong muốn điều này sẽ dễ dàng cho chính mình nhằm hiểu có mang này:

#include #include struct Books char tieude<50>; char tacgia<50>; char chude<100>; int id;;/* knhị bao đam mê */void inthongtinsach( struct Books *book );int main( ) struct Books Book1; /* Knhì bao Book1 la cua kieu Book */ struct Books Book2; /* Knhì bao Book2 la cua kieu Book */ /* thong tin đưa ra tiet quyen sach thu nhat */ strcpy( Book1.tieude, "Lap trinh C"); strcpy( Book1.tacgia, "Pđam mê Van At"); strcpy( Book1.chude, "Ngon dở hơi lap trinch C"); Book1.id = 1234567; /* thong tin đưa ra tiet quyen sach thu hai */ strcpy( Book2.tieude, "Toi vắt 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 chi cua Book1 */ inthongtinsach( &Book1 ); /* in thong tin Book2 bang cach truyen dia đưa ra cua Book2 */ inthongtinsach( &Book2 ); printf(" =========================== "); printf("Hoclaptrinch 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 đang đến kết quả:

*

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

Các trường bit có thể chấp nhận được đóng gói tài liệu trong một cấu tạo. Nó góp tối ưu hóa bộ nhớ lưu trữ.

Xem thêm:

C chất nhận được bạn triển khai vấn đề này vào một định nghĩa kết cấu do việc đặt: độ lâu năm bit sau trở nê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;Tại đây, packed_struct đựng 6 phần tử: 4 thành phần f1..f4 là một trong những bit, một type là 4 bit với một my_int 9 bit.

C auto gói gọn những ngôi trường bit trên càng gọn gàng càng giỏi, miễn là chiều lâu năm buổi tối nhiều của ngôi trường này nhỏ dại rộng hoặc bởi với chiều nhiều năm tự ngulặng của sản phẩm tính. Quý Khách sẽ mày mò về những ngôi trường bit trong một chương thơm riêng biệt.