Tất tần tận về Struct trong C++
Như chúng ta đã biến, các kiểu dữ liệu thông thường như kiểu int (một số nguyên), char (một kí tự) hay double (một số thực),… đều dùng để biểu diễn cho một biến với một kiểu dữ liệu cụ thể. Nhưng nếu bạn sử dụng chúng để biểu diễn cho thông tin của một người gồm: họ tên, tuổi, chiều cao, cân nặng, … thì ta phải dùng một lúc nhiều biến thông thường mới có thể biễu diễn được hết. Nhưng đừng lo, ngôn ngữ C++ có hỗ trợ Struct cho phép chúng ta thực hiện điều đó đơn giản hơn rất nhiều. Cùng tìm hiểu chi tiết hơn về Struct trong bài viết này của Isinhvien nhé!
Struct trong C++ là gì?
Struct là một kiểu dữ liệu do người dùng đặt ra bao gồm nhiều thành phần có thể thuộc nhiều kiểu dữ liệu khác nhau. Các thành phần được truy nhập thông qua một tên chung duy nhất.
Cú pháp khai báo struct
struct tên_struct { kiểu_dữ_liệu_1 tên_biến_1; kiểu_dữ_liệu_2 tên_biến_2; ... }
Ví dụ khai báo một struct nhân viên gồm các thông tin về sinh viên như họ tên, tuổi, chiều cao:
struct Nhanvien{ string Name; int Age; double Height; };
Truy cập đến một phần tử struct trong C++
Để truy cập đến một phần tử trong struct rất đơn giản, ta sẽ dùng cú pháp sau:
Tên_biến_struct . tên_phần tử
Ví dụ truy cập đến các phần tử trong struct Nhanvien:
// Khai báo struct nhân viên struct Nhanvien{ string Name; int Age; double Height; }; // Khai báo biến nv có kiểu struct Nhanvien Nhanvien nv; nv.Name ; // truy cập đến phần tử Name nv.Age ; // truy cập đến phần tử Age nv.Height; // truy cập đến phần tử Height
Gán giá trị cho struct trong C++
Để gán giá trị cho struct, ta có thể gán bằng nhiều cách. Xem một số ví dụ về gán giá trị cho struct bên dưới.
// Khai báo struct nhân viên struct Nhanvien{ string Name; int Age; double Height; }; // Khai báo biến nv có kiểu struct Nhanvien Nhanvien nv; // Gán giá trị từng thành phần của struct nv.Name = "Isinhvien"; nv.Age = 5; nv.Height = 1.8; // Gán giá trị cho các thành phần cùng lúc (C++ 11 only) nv = {"Isinhvien", 5, 1.8 };
Struct lồng nhau trong C++
Struct lồng nhau là các struct mà trong đó bao gồm một struct khác. Kiểu struct lồng nhau rất ít khi được sử dụng trong các chương trình.
Ví dụ chương trình về struct lồng nhau
#include <iostream> using namespace std; struct Employee { short id; int age; double wage; }; struct Company { Employee CEO; int numberOfEmployees; }; Company myCompany{{ 1, 42, 60000.0 }, 5 }; int main(){ cout << "id: " << myCompany.CEO.id << endl; cout << "age: " << myCompany.CEO.age << endl; cout << "wage: " << myCompany.CEO.wage << endl; cout << "numberOfEmployees: " << myCompany.numberOfEmployees << endl; }
Kết quả thực thi:
id: 1 age: 42 wage: 60000 numberOfEmployees: 5
Con trỏ struct trong C++
Với struct thì con trỏ cũng tương tự như con trỏ của các biến có kiểu dữ liệu khác. Cú pháp khai báo con trỏ như sau:
Tên_struct *tên_biến_con trỏ
Để truy cập đến các phần tử trong struct với con trỏ, ta có thể dùng một trong 2 cách sau:
tên_con_trỏ -> tên_phần tử;
(*tên_con_trỏ) . tên_phần_tử;
Ví dụ về con trỏ struct:
// Khai báo struct nhân viên struct Nhanvien{ string Name; int Age; double Height; }; //Khởi tạo một con trỏ kiểu struct Nhanvien *p; (*p).Name; // Truy cập đến phần tử Name p-> Age; // Truy cập đến phần tử Age
Hy vọng sau bài viết này sẽ giúp các bạn hiểu rõ hơn về Struct trong C++! Nếu thấy bài viết này của Isinhvien hay và bổ ích thì hãy chia sẻ nó đến với bạn bè của mình để ủng hộ cho Isinhvien và giúp Isinhvien ngày càng phát triển hơn nhé! Chúc các bạn thành công!