Bài 14: Struct trong C - Học lập trình C cơ bản

Đăng bởi: Admin | Lượt xem: 2714 | Chuyên mục: C/C++


Mảng trong C cho phép xác định loại biến có thể chứa nhiều mục dữ liệu cùng loại, còn cấu trúc (Struct) trong C tương tự là một kiểu dữ liệu do người dùng định nghĩa khác có sẵn trong C cho phép kết hợp các mục dữ liệu của các loại khác nhau.

1. Đị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;
};

2. Khai báo biến cấu trúc

Có hai cách để khai báo biến cấu trúc:
  1. Sử dụng từ khóa struct trong hàm main().
  2. Khai báo biến tại thời điểm định nghĩa cấu trúc.
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;
}
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;
}

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.

3. 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:
  1. Bởi . (thành viên hoặc toán tử chấm).
  2. Bởi -< (toán tử con trỏ cấu trúc).
e1.id = 17;
e1.name = "Vinh";
e1.salary = 1000;

4. Ví dụ

Ví dụ : lưu trữ thông tin của một employee.
#include
#include 
 
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ả thu được:
employee 1 id : 17
employee 1 name : Vinh Tran
employee 1 salary : 1000.000000
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!