Cấu trúc dữ liệu trong C/C++
Các mảng trong C/C++ cho phép bạn định nghĩa một vài loại biến có thể giữ giá trị của một vài thành viên cùng kiểu dữ liệu. Nhưng structure - cấu trúc là một loại dữ liệu khác trong ngôn ngữ lập trình C/C++, cho phép bạn kết hợp các dữ liệu khác kiểu nhau.
Cấu trúc được sử dụng để biểu diễn một bản ghi. Giả sử bạn muốn lưu trữ giá trị của một quyển sách trong thư viện của bạn. Bạn có thể lưu trữ các thuộc tính của sách sau đây:
- Tiêu đề
- Tác giả
- Chủ đề
- Book ID
Viết code C++ trên trình duyệt
Định nghĩa một cấu trúc trong C++
Để định nghĩa cấu trúc, bạn phải sử dụng câu lệnh struct. Câu lệnh struct định nghĩa một kiểu dữ liệu mới, với hơn một thành viên trong chương trình của bạn. Dạng tổng quát của câu lệnh struct như sau đây:
struct [ten cau truc] 
{ 
    phan dinh nghia thanh vien; 
    phan dinh nghia thanh vien; 
    ... 
    phan dinh nghia thanh vien; 
} [mot hoac nhieu bien cau truc];Ở đây, ten cau truc có thể tùy ý và một thành viên định nghĩa là các biến thường như int i, float j hoặc một định nghĩa biến khác... Tại phần cuối cùng của định nghĩa cấu trúc, trước dấu chấm phẩy, bạn có thể xác định một hoặc nhiều biến cấu trúc (tùy chọn). Dưới đây là cách khai báo biến cấu trúc Book:
struct Books 
{ 
    char tieude[50]; 
    char tacgia[50]; 
    char chude[100]; 
    int book_id; 
}book;Truy cập các thành viên của cấu trúc trong C++
Để truy cập bất kỳ thành viên nào của cấu trúc, bạn sử dụng toán tử truy cập phần tử (.). Toán tử truy cập thành viên cấu trúc được mã hóa là dấu chấm giữa tên biến cấu trúc và thành viên cấu trúc mà bạn muốn truy cập. Bạn sẽ sử dụng từ khóa struct để định nghĩa các biến của kiểu cấu trúc. Dưới đây là ví dụ cho cách sử dụng cấu trúc trong C++:
#include <iostream> 
#include <cstring> 
using namespace std; 
struct Books 
{ 
    char tieude[50]; 
    char tacgia[50]; 
    char chude[100]; 
    int book_id;     
}; 
int main( ) 
{ 
    struct Books QuyenSach1; 
    // Khai báo QuyenSach1 là type Book 
    struct Books QuyenSach2; 
    // Khai báo QuyenSach2 là type Book 
    // chi tiet ve quyen sach thu nhat 
    strcpy( QuyenSach1.tieude, "Ngon ngu Lap trinh C++"); 
    strcpy( QuyenSach1.tacgia, "Pham Van At"); 
    strcpy( QuyenSach1.chude, "Lap trinh"); 
    QuyenSach1.book_id = 1225; 
    // chi tiet ve quyen sach thu hai 
    strcpy( QuyenSach2.tieude, "Toi thay hoa vang tren co xanh"); 
    strcpy( QuyenSach2.tacgia, "Nguyen Nhat Anh"); 
    strcpy( QuyenSach2.chude, "Van hoc"); 
    QuyenSach2.book_id = 3214; 
    // in thong tin ve QuyenSach1 
    cout << "Tieu de cua Quyen sach thu nhat la: " << QuyenSach1.tieude <<endl; 
    cout << "Tac gia cua Quyen sach thu nhat la: " << QuyenSach1.tacgia <<endl; 
    cout << "Chu de cua Quyen sach thu nhat la: " << QuyenSach1.chude <<endl; 
    cout << "ID cua Quyen sach thu nhat la: " << QuyenSach1.book_id <<endl; 
    cout << "\n\n===================================================================\n\n" <<endl; 
    // in thong tin ve QuyenSach2 
    cout << "Tieu de cua Quyen sach thu hai la: " << QuyenSach2.tieude <<endl; 
    cout << "Tac gia cua Quyen sach thu hai la: " << QuyenSach2.tacgia <<endl; 
    cout << "Chu de cua Quyen sach thu hai la: " << QuyenSach2.chude <<endl; 
    cout << "ID cua Quyen sach thu hai la: " << QuyenSach2.book_id <<endl; 
    return 0; 
}Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:

Cấu trúc dưới dạng tham số hàm trong C++
Bạn có thể truyền một cấu trúc như một tham số của hàm theo cách khá giống như khi bạn truyền bất kỳ biến hay con trỏ khác. Bạn sẽ truy cập biến cấu trúc theo cách tương tự như bạn đã truy cập trong ví dụ trên:
#include <iostream> 
#include <cstring> 
using namespace std; 
void inthongtin(struct Books book); 
struct Books 
{ 
    char tieude[50]; 
    char tacgia[50]; 
    char chude[100]; 
    int book_id; 
    
}; 
int main( ) 
{ 
    struct Books QuyenSach1; 
    // Khai bao QuyenSach1 la cua kieu Books 
    struct Books QuyenSach2; 
    // Khai bao QuyenSach2 la cua kieu Books 
    // chi tiet ve quyen sach thu nhat 
    strcpy(QuyenSach1.tieude, "Ngon ngu Lap trinh C++"); 
    strcpy(QuyenSach1.tacgia, "Pham Van At"); 
    strcpy(QuyenSach1.chude, "Lap trinh"); 
    QuyenSach1.book_id = 1225; 
    // chi tiet ve quyen sach thu hai 
    strcpy(QuyenSach2.tieude, "Toi thay hoa vang tren co xanh"); 
    strcpy(QuyenSach2.tacgia, "Nguyen Nhat Anh"); 
    strcpy(QuyenSach2.chude, "Van hoc"); 
    QuyenSach2.book_id = 3214; 
    // in thong tin ve QuyenSach1 
    inthongtin(QuyenSach1); 
    // in thong tin ve QuyenSach2 
    inthongtin(QuyenSach2); 
    return 0; 
} 
void inthongtin(struct Books book) 
{ 
    cout << "Tieu de sach: " << book.tieude <<endl; 
    cout << "Tac gia: " << book.tacgia <<endl; 
    cout << "Chu de: " << book.chude <<endl; 
    cout << "ID cua sach la: " << book.book_id <<endl; 
    cout << "\n\n========================================\n\n" <<endl; 
}Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:

Con trỏ tới cấu trúc trong C++
Bạn có thể định nghĩa con trỏ cấu trúc theo cách tương tự bạn định nghĩa con trỏ tới bất kỳ biến nào khác như sau:
struct Books *contro_struct;Bây giờ bạn có thể lưu địa chỉ của biến cấu trúc trong biến con trỏ được định nghĩa ở trên. Để tìm địa chỉ của một biến cấu trúc, đặt toán tử & trước tên cấu trúc như sau:
contro_struct = &QuyenSach1;Để truy cập vào thành viên của một structure sử dụng con trỏ tới structure đó, bạn phải sử dụng toán tử -> như sau:
contro_struct->tieude;Bây giờ chúng ta viết lại ví dụ trên sử dụng con trỏ cấu trúc, hy vọng điều này sẽ dễ dàng cho bạn để hiểu khái niệm này:
#include <iostream> 
#include <cstring> 
using namespace std; 
void inthongtin(struct Books *book); 
struct Books 
{ 
    char tieude[50]; 
    char tacgia[50]; 
    char chude[100]; 
    int book_id; 
}; 
int main( ) 
{ 
    struct Books QuyenSach1; 
    // Khai bao QuyenSach1 la cua kieu Books 
    struct Books QuyenSach2; 
    // Khai bao QuyenSach2 la cua kieu Book 
    // thong tin chi thiet ve quyen sach thu nhat 
    strcpy(QuyenSach1.tieude, "Ngon ngu Lap trinh C++"); 
    strcpy(QuyenSach1.tacgia, "Pham Van At"); 
    strcpy(QuyenSach1.chude, "Lap trinh"); 
    QuyenSach1.book_id = 1225; 
    // thong tin chi thiet ve quyen sach thu hai 
    strcpy(QuyenSach2.tieude, "Toi thay hoa vang tren co xanh"); 
    strcpy(QuyenSach2.tacgia, "Nguyen Nhat Anh"); 
    strcpy(QuyenSach2.chude, "Van hoc"); 
    QuyenSach2.book_id = 3214; 
    // in thong tin cua QuyenSach1, bang cach truyen dia chi cua cau truc 
    inthongtin(&QuyenSach1); 
    // in thong tin cua QuyenSach2, bang cach truyen dia chi cua cau truc 
    inthongtin(&QuyenSach2); 
    return 0; 
} 
// Ham nay chap nhan con tro toi cau truc lam tham so. 
void inthongtin(struct Books *book) 
{ 
    cout << "Tieu de sach: " << book->tieude <<endl; 
    cout << "Tac gia: " << book->tacgia <<endl; 
    cout << "Chu de: " << book->chude <<endl; 
    cout << "ID cua sach: " << book->book_id <<endl; 
    cout << "\n\n========================================\n\n" <<endl;
}Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:

Từ khóa typedef trong C++
Có một cách dễ dàng hơn để định nghĩa các cấu trúc hoặc bạn có thể "alias" các kiểu bạn tạo. Ví dụ:
typedef struct 
{ 
    char tieude[50]; 
    char tacgia[50]; 
    char chude[100]; 
    int book_id; 
    
}Books;Lúc này, bạn có thể sử dụng Books một cách trực tiếp để định nghĩa các biến của kiểu cấu trúc Books mà không sử dụng từ khóa struct. Sau đây là ví dụ:
Books QuyenSach1, QuyenSach2;Bạn có thể sử dụng từ khóa typedef trong C++ cho các dạng không phải cấu trúc, như sau:
typedef long int *pint32; 
pint32 x, y, z;Với x, y và z là tất cả con trỏ tới long int.
Theo Tutorialspoint
Bài trước: Input/Output trong C++
Bài tiếp: Lớp(class) và Đối tượng trong C++
Bạn nên đọc
-     Sự khác biệt giữa đối số và tham số trong C/C++
-     Kiểu dữ liệu trong C/C++
-     Đọc/ghi File trong C++ | fstream trong C++
-     Mảng (Array) trong C/C++
-     Toán tử trong C++
-     Bộ nhớ động trong C++
-     Bài tập C++ có giải (code mẫu) về biến, kiểu dữ liệu và toán tử
-     Chuỗi (String) trong C/C++
-     Interface trong C++ (Lớp trừu tượng)
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

 Lập trình C++
 Lập trình C++ Cũ vẫn chất
-   Cách sao chép hoặc tạo bản sao toàn bộ trang tính trong Google SheetsHôm qua
-   Cách đặt độ phân giải tùy chỉnh trong OBSHôm qua
-   Hàm COUNTIFS, cách dùng hàm đếm ô theo nhiều điều kiện trong ExcelHôm qua
-   Các cách reset mật khẩu BIOS hoặc gỡ mật khẩu BIOSHôm qua
-   Các cách làm, tùy chỉnh trong bài sẽ giúp tăng tốc Windows 10 của bạn "nhanh như gió"Hôm qua 6
-   Cách nhận Cursed Dual Katana Blox FruitHôm qua
-   Code Tiểu Yêu Tầm Đạo mới nhấtHôm qua
-   Cách dùng Terabox lưu trữ với 1TB miễn phíHôm qua 5
-   Tải AutoCAD 2020 bản quyền miễn phí (AutoCAD Student)Hôm qua
-   Cách sửa lỗi không thấy bộ điều hợp mạng trên Windows 10Hôm qua
 Học IT
 Học IT  
  
  
  
  
  
  
  
  
  
  Nền tảng Web
 Nền tảng Web  Microsoft Word 2013
 Microsoft Word 2013  Microsoft Word 2007
 Microsoft Word 2007  Microsoft Excel 2019
 Microsoft Excel 2019  Microsoft Excel 2016
 Microsoft Excel 2016  Microsoft PowerPoint 2019
 Microsoft PowerPoint 2019  Microsoft PowerPoint 2016
 Microsoft PowerPoint 2016  Google Sheets
 Google Sheets  Học Python
 Học Python  HTML
 HTML  Lập trình Scratch
 Lập trình Scratch  CSS và CSS3
 CSS và CSS3  Lập trình C
 Lập trình C  Lập trình C#
 Lập trình C#  Học PHP
 Học PHP  Bootstrap
 Bootstrap  SQL Server
 SQL Server  JavaScript
 JavaScript  Unix/Linux
 Unix/Linux  Khoa học vui
 Khoa học vui  Khám phá khoa học
 Khám phá khoa học  Bí ẩn - Chuyện lạ
 Bí ẩn - Chuyện lạ  Sức khỏe
 Sức khỏe  Vũ trụ
 Vũ trụ  Khám phá thiên nhiên
 Khám phá thiên nhiên  Bảo vệ Môi trường
 Bảo vệ Môi trường  Phát minh Khoa học
 Phát minh Khoa học  Tết 2025
 Tết 2025  Video
 Video  Hướng dẫn
 Hướng dẫn  Công nghệ
 Công nghệ  Khoa học
 Khoa học  Ô tô, Xe máy
 Ô tô, Xe máy  Tổng hợp
 Tổng hợp