Trong ngôn ngữ lập trình C, 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.
Khai báo và khởi tạo cấu trúc
Hình thức chung của một khai báo cấu trúc như sau -
datatype member1; struct tagname{ datatype member2; datatype member n; };
Đây,
- struct là một từ khoá.
- 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 phương pháp khai báo biến cấu trúc như sau -
Phương pháp đầu tiên
struct book{ int pages; char author[30]; float price; }b;
Phương pháp thứ hai
struct{ int pages; char author[30]; float price; }b;
Phương pháp thứ ba
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 một toán tử thành viên (hoặc) một toán tử dấu chấm.
Quá trình khởi tạo có thể được thực hiện theo các phương pháp sau -
Phương pháp đầu tiên
struct book{ int pages; char author[30]; float price; } b = {100, “balu”, 325.75};
Phương pháp thứ hai
struct book{ int pages; char author[30]; float price; }; struct book b = {100, “balu”, 325.75};
Phương pháp thứ ba bằng cách 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;
Ví dụ
Sau đây là chương trình C để so sánh các biến cấu trúc -
struct class{ int number; char name[20]; float marks; }; main(){ int x; struct class student1 = {001,"Hari",172.50}; struct class student2 = {002,"Bobby", 167.00}; struct class student3; student3 = student2; x = ((student3.number == student2.number) && (student3.marks == student2.marks)) ? 1 : 0; if(x == 1){ printf("\nstudent2 and student3 are same\n\n"); printf("%d %s %f\n", student3.number, student3.name, student3.marks); } else printf("\nstudent2 and student3 are different\n\n"); }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
student2 and student3 are same 2 Bobby 167.000000