Mảng cấu trúc trong C++ | Laptrinhcanban.com

Mảng cấu trúc trong C++

Cùng tìm hiểu về mảng cấu trúc trong C++. Bạn sẽ biết mảng cấu trúc trong C++ là gì, cách khởi tạo và khai báo mảng cấu trúc trong C++, cũng như cách truy cập giá trị và sử dụng mảng cấu trúc trong C++ sau bài học này.

Mảng cấu trúc trong C++ là gì

Mảng cấu trúc trong C++ là mảng chứa các thực thể được tạo ra từ một kiểu cấu trúc bên trong nó. Do thực thể tạo ra từ cấu trúc cũng là một loại giá trị, nên chúng ta cũng có thể lưu trữ chúng như là phần tử trong cùng một mảng. Và các phần tử trong mảng cấu trúc đều có chung kiểu là kiểu cấu trúc đã sử dụng để tạo nên thực thể.

Mảng cấu trúc trong C++ có đặc tính của cả kiểu mảng và kiểu cấu trúc, do đó chúng ta có thể truy cập vào các thực thể trong mảng cấu trúc thông qua index, cũng như là truy cập vào các thành viên của từng thực thể theo cách thông thường.

Ví dụ, chúng ta có kiểu cấu trúc person_t như sau:

typedef struct {   
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;

Từ kiểu cấu trúc person_t, chúng ta tạo ra một mảng cấu trúc chứa 5 phần tử là các thực thể được tạo ra từ kiểu cấu trúc này như sau:

Mảng cấu trúc trong C++ là gì

Khai báo mảng cấu trúc trong C++

Tương tự như khai báo mảng thông thường thì chúng ta khai báo mảng cấu trúc trong C++ bằng cách đặt kiểu dữ liệu là tên của kiểu cấu trúc được sử dụng trước tên mảng, sau đó đặt số phần tử vào trong cặp dấu [] với cú pháp sau đây:

struct_name array_name[length];

Trong đó struct_name là tên kiểu cấu trúc, array_name là tên mảng, và length chính là số phần tử của mảng, ở đây là số thực thể của kiểu cấu trúc chứa trong mảng.

Lưu ý kiểu dữ liệu ở đây là tên kiểu cấu trúc được sử dụng, và kiểu cấu trúc này cần được khai báo trước trong chương trình.

Ví dụ cụ thể, chúng ta khai báo kiểu cấu trúc person_t, và tạo một mảng cấu trúc chứa 3 thực thể được tạo ra từ person_t như sau:

//Khai báo kiểu cấu trúc
typedef struct {
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;

main(){
//Khai báo mảng cấu trúc chứa 3 thực thể của kiểu cấu trúc
person_t p[3];
}

Khởi tạo mảng cấu trúc trong C++

Tương tự như khởi tạo mảng thông thường thì chúng ta khởi tạo mảng cấu trúc trong C++ bằng cách viết các phần tử của mảng cách nhau bởi dấu phẩy vào giữa cặp dấu ngoặc nhọn {} với cú pháp khởi tạo mảng như sau:

struct_name array_name[length] = {value1, value2, value3,..};

Trong đó struct_name là tên kiểu cấu trúc, array_name là tên mảng, length chính là số phần tử của mảng, và các value là giá trị của các thực thể tạo ra từ kiểu cấu trúc chứa trong mảng.

Ví dụ cụ thể, chúng ta khởi tạo mảng cấu trúc trong C++ như sau:

#include <iostream>
using namespace std;

#define PERSON_NUM 5

typedef struct {
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;

main(){
person_t p[PERSON_NUM] = {{"Bob", 'M', 19, 165.4, 72.5},
{"Alice", 'F', 19, 161.7, 44.2},
{"Tom", 'M', 20, 175.2, 66.3},
{"Stefany", 'F', 18, 159.3, 48.5},
{"Leonardo", 'M', 19, 172.8, 67.2}};
return 0;
}

Truy cập vào phần tử và thành viên trong phần tử của mảng cấu trúc

Mảng cấu trúc có đặc tính của cả kiểu mảng và kiểu cấu trúc, do đó chúng ta có thể truy cập vào các phần tử là các thực thể trong mảng cấu trúc thông qua index, cũng như là truy cập vào các thành viên của từng thực thể thông qua dấu chấm theo cách thông thường.

Ví dụ, chúng ta truy cập vào một thực thể có index chỉ định, và lấy giá trị của một thành viên của thực thể đó như sau:

#include <iostream>
using namespace std;

#define PERSON_NUM 5

typedef struct {
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;

main(){
person_t p[PERSON_NUM] = {{"Bob", 'M', 19, 165.4, 72.5},
{"Alice", 'F', 19, 161.7, 44.2},
{"Tom", 'M', 20, 175.2, 66.3},
{"Stefany", 'F', 18, 159.3, 48.5},
{"Leonardo", 'M', 19, 172.8, 67.2}};

//Truy cập vào thực thể trong mảng cấu trúc và gán thực thể vào một biến
person_t p0 = p[0];

//Truy cập vào thành viên của thực thể trên và gán vào một mảng chuỗi
string name = p0.name; // string name = p[0].name;
cout << name ;
return 0;
}

Kết quả, tên thành viên của thực thể có index bằng 0 sẽ được xuất ra màn hình như sau:

Bob

Bằng cách này, chúng ta có thể truy xuất và tính toán với các giá trị của thành viên có trong mảng cấu trúc.

Ví dụ, chúng ta có thể tính toán chiều cao trung bìnhcân nặng trung bình của các thực thể (các bạn Bob, Alice, Tom, Stefany và Leonardo) trong mảng cấu trúc như sau:

#include <iostream>
using namespace std;

//Định nghĩa số thực thể trong mảng cấu trúc
#define PERSON_NUM 5

//Khai báo kiểu cấu trúc
typedef struct {
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;

main(){
//Khởi tạo mảng cấu trúc với 5 thực thể được tạo ra từ cấu trúc
person_t p[PERSON_NUM] = {{"Bob", 'M', 19, 165.4, 72.5},
{"Alice", 'F', 19, 161.7, 44.2},
{"Tom", 'M', 20, 175.2, 66.3},
{"Stefany", 'F', 18, 159.3, 48.5},
{"Leonardo", 'M', 19, 172.8, 67.2}};

//Khai báo các biến tổng và trung bình của chiều cao và cân nặng
double height_sum, weight_sum, height_ave, weight_ave;
height_sum = weight_sum = 0.0;

//Sử dụng vòng lặp để tính tổng chiều cao và cân nặng từ các thực thể
for (short i = 0; i < PERSON_NUM; i++) {
height_sum += p[i].height;
weight_sum += p[i].weight;
}

//Từ tổng chiều cao và cân nặng tính ra giá trị trung bình
height_ave = height_sum / PERSON_NUM;
weight_ave = weight_sum / PERSON_NUM;

cout << "Chieu cao trung binh = "<< height_ave<<endl;
cout << "Can nang trung binh = "<< weight_ave;
return 0;
}

Kết quả:

Chieu cao trung binh = 166.88
Can nang trung binh = 59.74

Tổng kết

Trên đây Kiyoshi đã hướng dẫn các bạn về mảng cấu trúc trong C++ là gì, cách khởi tạo và khai báo mảng cấu trúc trong C++, cũng như cách truy cập giá trị và sử dụng mảng cấu trúc trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.