Chi tiết bài học Cấu trúc trong C++

Cấu trúc trong C++

Trong bài này, bạn sẽ được học về cấu trúc (structure) trong lập trình C++; nó là gì, cách định nghĩa và sử dụng nó trong chương trình của bạn.

Cấu trúc là một tập các biến thuộc các kiểu khác nhau dưới một tên khác. Nó gần tương tự như một lớp vì cả hai đều chứa tập dữ liệu thuộc các kiểu khác nhau.

Ví dụ: Bạn muốn lưu thông tin về một người: tên của anh/cô ta, số chứng minh thư và mức  lương. Bạn có thể dễ dàng tạo ra các biến khác nhau như name, citNo, salary để lưu các thông tin đó riêng biệt.

Tuy nhiên, trong tương lai, bạn muốn lưu thông tin cho nhiều người. Giờ bạn cần tạo các biến khác nhau để thể hiện thông tin của từng người: name1, citNo1, salary1, name2, citNo2, salary2.

Bạn có thể dễ dàng hình dung mã nguồn của bạn sẽ trở nên lớn và lộn xộn thế nào. Ngoài ra, vì không có mối quan hệ nào giữa các biến (thông tin), nên đây sẽ là một công việc khó khăn.

Một cách tiếp cận tốt hơn đó là có một tập chứa toàn bộ thông tin liên quan dưới một tên duy nhất Person, và sử dụng chúng cho từng người. Giờ mã nguồn sẽ trở nên gọn gàng, dễ đọc và hiệu quả hơn.

Tập hợp chứa toàn bộ thông tin liên quan dưới một tên gọi duy nhất Person này được gọi là một cấu trúc.

Cách khai báo một cấu trúc trong lập trình C++?

Từ khóa struct định nghĩa một kiểu cấu trúc đi kèm với một định danh (tên của cấu trúc đó).

Sau đó bên trong ngoặc nhọn, bạn có thể khai báo một hoặc nhiều hơn các thành phần (khai báo biến bên trong ngoặc nhọn) của cấu trúc đó. Ví dụ:

struct Person
{
    char name[50];
    int age;
    float salary;
};

Đây là một cấu trúc person được định nghĩa với 3 thành phần: name, age và salary.

Lưu ý rằng khi một cấu trúc được tạo, không có vùng nhớ nào được cấp phát.

Định nghĩa cấu trúc chỉ là một bản thiết kế cho việc tạo ra các biến. Bạn có thể hình dung nó giống như một kiểu dữ liệu. Khi bạn định nghĩa một số nguyên như sau:

int foo;

Từ khóa int sẽ chỉ ra rằng biến foo chỉ có thể chứa các số nguyên. Tương tự, định nghĩa cấu trúc chỉ đưa ra thông tin về đặc tính mà các biến trong cấu trúc đó mang.

Chú ý: Đừng quên việc kết thúc quá trình khai báo bằng dấu chấm phẩy (;).

Cách định nghĩa một biến cấu trúc?

Khi bạn đã khai báo cấu trúc person như trên. Bạn có thể định nghĩa một biến cấu trúc như sau:

Person bill;

Ở đây, biến cấu trúc bill được định nghĩa có kiểu struct Person.

Khi biến cấu trúc được định nghĩa, chỉ khi đó vùng nhớ cần thiết mới được cấp phát bởi trình biên dịch.

Xét trường hợp bạn sử dụng hệ thống 32-bit hay 64-bit, vùng nhớ cho float là 4 bytes, vùng nhớ cho int là 4 bytes và vùng nhớ cho char là 1 byte.

Vì thế, 58 bytes vùng nhớ sẽ được cấp phát cho biến cấu trúc bill.

Cách truy xuất thành phần của một cấu trúc?

Các thành phần của biến cấu trúc có thể được truy xuất bằng cách sử dụng toán tử chấm (.).

Giả sử bạn muốn truy xuất age trong biến cấu trúc bill và gán cho nó giá trị 50. Bạn có thể thực hiện tác vụ này bằng đoạn mã sau:

bill.age = 50;

Ví dụ: Cấu trúc trong C++

Chương trình C++ giúp gán dữ liệu cho một struct và hiển thị nó.

#include <iostream>
using namespace std;

struct Person
{
    char name[50];
    int age;
    float salary;
};

int main()
{
    Person p1;
    
    cout << "Enter Full name: ";
    cin.get(p1.name, 50);
    cout << "Enter age: ";
    cin >> p1.age;
    cout << "Enter salary: ";
    cin >> p1.salary;

    cout << "\nDisplaying Information." << endl;
    cout << "Name: " << p1.name << endl;
    cout <<"Age: " << p1.age << endl;
    cout << "Salary: " << p1.salary;

    return 0;
}

Đầu ra

Enter Full name: Magdalena Dankova

Enter age: 27

Enter salary: 1024.4

 

Displaying Information.

Name: Magdalena Dankova

Age: 27

Salary: 1024.4

Ở đây một cấu trúc Person được khai báo với 3 thành viên name, age và salary.

Trong hàm main(), một biến cấu trúc p1 được định nghĩa. Sau đó người dùng được yêu cầu nhập vào thông tin và dữ liệu do người dùng nhập vào sẽ được in ra.