Cấu trúc là một tập hợp các biến kiểu dữ liệu khác nhau, được nhóm lại với nhau dưới một tên duy nhất Cú pháp.
Khai báo và khởi tạo cấu trúc
Hình thức khai báo cấu trúc chung như sau -
datatype member1; struct tagname{ datatype member2; datatype member n; };
Đây, struct - keyword
tagname - chỉ định tên của cấu trúc
member1, member2 - chỉ định các mục dữ liệu tạo nên cấu trúc.
Ví dụ
struct book{ int pages; char author [30]; float price; };
Các biến cấu trúc
Có ba cách khai báo biến cấu trúc. Chúng như sau -
1) struct book{ int pages; char author[30]; float price; }b; 2) struct{ int pages; char author[30]; float price; }b; 3) struct book{ int pages; char author[30]; float price; }; struct book b;
Khởi tạo và truy cập cấu trúc
-
Liên kết giữa một thành viên và một biến cấu trúc được thiết lập bằng cách sử dụng toán tử thành viên (hoặc) toán tử dấu chấm.
-
Việc khởi tạo có thể được thực hiện theo những cách sau -
Phương pháp 1
struct book{ int pages; char author[30]; float price; } b = {100, “balu", 325.75};
Phương pháp 2
struct book{ int pages; char author[30]; float price; }; struct book b = {100, “balu", 325.75};
Phương pháp 3 (sử dụng toán tử thành viên)
struct book{ int pages; char author[30]; float price; } ; struct book b; b. pages = 100; strcpy (b.author, “balu"); b.price = 325.75;
Phương pháp 4 (sử dụng scanf chức năng)
struct book{ int pages; char author[30]; float price; } ; struct book b; scanf (“%d", &b.pages); scanf (“%s", b.author); scanf (“%f", &b. price);
Chúng ta có thể in nội dung của một trong hai cấu trúc trên trong phương thức chính như hình dưới đây -
main ( ){ struct book b; clrscr ( ); printf ( "enter no of pages, author, price of book"); scanf ("%d%s%f", &b.pages, b.author, &b.price); printf("Details of book are"); printf("pages =%d, author = %s, price = %f", b.pages, b.author, b.price); getch(); }
Ví dụ
Sau đây là một ví dụ khác về cấu trúc -
#include<stdio.h> struct aaa{ struct aaa *prev; int i; struct aaa *next; }; main(){ struct aaa abc,def,ghi,jkl; int x=100; abc.i=0; abc.prev=&jkl; abc.next=&def; def.i=1; def.prev=&abc; def.next=&ghi; ghi.i=2;ghi.prev=&def; ghi.next=&jkl; jkl.i=3; jkl.prev=&ghi; jkl.next=&abc; x=abc.next->next->prev->next->i; printf("%d",x); }
Đầu ra
2