Structure trong C (cấu trúc trong C) là một kiểu dữ liệu người dùng tự định nghĩa (user defined datatype) cho phép bạn lưu trữ các loại phần tử khác nhau.
Mỗi phần tử của một cấu trúc được gọi là một thành viên (member).
Nó hoạt động như một template trong C++ và lớp trong Java. Bạn có thể khai báo các loại phần tử khác nhau trong đó.
Nội dung chính
Định nghĩa cấu trúc trong C
Từ khóa struct được sử dụng để xác định cấu trúc. Hãy xem cú pháp để định nghĩa cấu trúc trong C.
struct structure_name { data_type member1; data_type member2; ... data_type memeberN; };
Ví dụ định nghĩa cấu trúc của Employee trong C.
struct employee { int id; char name[50]; float salary; };
Khai báo biến cấu trúc
Có hai cách để khai báo biến cấu trúc:
- Sử dụng từ khóa struct trong hàm main().
- Khai báo biến tại thời điểm định nghĩa cấu trúc.
1. Cách 1
Khai báo biến cấu trúc bên trong hàm main(), ví dụ:
struct employee { int id; char name[50]; float salary; }; int main() { struct employee e1, e2; }
1. Cách 2
Khai báo biến cấu trúc tại thời điểm định nghĩa cấu trúc, ví dụ:
struct employee { int id; char name[50]; float salary; } e1, e2;
Cách tiếp cận nào tốt hơn?
Khi số lượng biến không cố định, sử dụng phương pháp tiếp cận thứ nhất. Nó cung cấp cho bạn sự linh hoạt để khai báo biến cấu trúc nhiều lần. Khi số lượng biến được cố định, sử dụng phương pháp thứ 2.
Truy cập các thành viên của cấu trúc
Có hai cách để truy cập vào các thành viên cấu trúc:
- Bởi . (thành viên hoặc toán tử chấm).
- Bởi -< (toán tử con trỏ cấu trúc).
Ví dụ:
e1.id = 17; e1.name = "Vinh"; e1.salary = 1000;
Ví dụ cấu trúc (structure) trong C
Ví dụ 1: lưu trữ thông tin của một employee.
#include<stdio.h> #include <string.h> struct employee { int id; char name[50]; float salary; } e1; // khai bao bien e1 int main() { // luu tru thong tin employee e1.id = 17; strcpy(e1.name, "Vinh Tran"); // sao chep string thanh mang char e1.salary = 1000; // hien thi thong tin employee ra man hinh printf("employee 1 id : %d\n", e1.id); printf("employee 1 name : %s\n", e1.name); printf("employee 1 salary : %f\n", e1.salary); return 0; }
Kết quả:
employee 1 id : 17 employee 1 name : Vinh Tran employee 1 salary : 1000.000000
Ví dụ 2: lưu trữ thông tin của nhiều employee.
#include<stdio.h> #include <string.h> struct employee { int id; char name[50]; float salary; }; int main() { // khai bao employee e1, e2 struct employee e1, e2; // luu tru thong tin employee e1 e1.id = 17; strcpy(e1.name, "Vinh Tran"); // sao chep string thanh mang char e1.salary = 1000; // luu tru thong tin employee e2 e2.id = 37; strcpy(e2.name, "Quy Pham"); // sao chep string thanh mang char e2.salary = 1700; // hien thi thong tin employee e1 ra man hinh printf("employee 1 id : %d\n", e1.id); printf("employee 1 name : %s\n", e1.name); printf("employee 1 salary : %f\n", e1.salary); // hien thi thong tin employee e2 ra man hinh printf("employee 2 id : %d\n", e2.id); printf("employee 2 name : %s\n", e2.name); printf("employee 2 salary : %f\n", e2.salary); return 0; }
Kết quả:
employee 1 id : 17 employee 1 name : Vinh Tran employee 1 salary : 1000.000000 employee 2 id : 37 employee 2 name : Quy Pham employee 2 salary : 1700.000000