Skip to content

Tự học C++ - Module 5: Cấu trúc dữ liệu, Tham chiếu và Con trỏ

TuanNDA
Published date:
Edit this post

Table of contents

Open Table of contents

1. Cấu trúc (Structures - Struct)

Trong khi mảng chỉ cho phép lưu các giá trị cùng kiểu, thì struct cho phép bạn gom nhóm các biến có kiểu dữ liệu khác nhau vào một đơn vị duy nhất.

Tạo một Struct:

Dùng từ khóa struct và khai báo các thành viên bên trong dấu ngoặc nhọn.

struct car {
  string brand;
  string model;
  int year;
};

Truy cập Struct:

Bạn sử dụng dấu chấm . để truy cập vào các thành viên của struct.

car myCar1;
myCar1.brand = "BMW";
myCar1.model = "X5";
myCar1.year = 1999;

cout << myCar1.brand << " " << myCar1.year; 
// Kết quả: BMW 1999

2. Kiểu Liệt kê (Enums)

enum (viết tắt của enumeration) là một kiểu dữ liệu đặc biệt dùng để định nghĩa một tập hợp các hằng số có tên, giúp mã nguồn dễ hiểu hơn.

enum Level {
  LOW,    // Tương ứng với 0
  MEDIUM, // Tương ứng với 1
  HIGH    // Tương ứng với 2
};

int main() {
  Level myVar = MEDIUM;
  cout << myVar; // Kết quả: 1
  return 0;
}

3. Tham chiếu (References)

Một biến tham chiếu là “bí danh” (alias) của một biến đã tồn tại. Bạn tạo tham chiếu bằng cách sử dụng toán tử &.

string food = "Pizza";
string &meal = food; // meal là bí danh của food

cout << food; // Kết quả: Pizza
cout << meal; // Kết quả: Pizza

meal = "Burger"; // Thay đổi meal cũng sẽ thay đổi food
cout << food; // Kết quả: Burger

4. Địa chỉ bộ nhớ (Memory Address)

Mọi biến khi được tạo ra đều được lưu trữ tại một địa chỉ cụ thể trong bộ nhớ máy tính. Bạn có thể xem địa chỉ này bằng toán tử &.

string food = "Pizza";
cout << &food; // Kết quả dạng Hexa: 0x6dfed4...

5. Con trỏ (Pointers)

Đây là khái niệm quyền năng nhất của C++. Con trỏ là một biến dùng để lưu trữ địa chỉ bộ nhớ của một biến khác.

Khai báo Con trỏ:

Sử dụng toán tử *. Kiểu dữ liệu của con trỏ phải khớp với kiểu dữ liệu của biến nó trỏ tới.

string food = "Pizza";
string* ptr = &food; // ptr lưu địa chỉ của food

cout << food; // In giá trị: Pizza
cout << &food; // In địa chỉ bộ nhớ
cout << ptr;  // In địa chỉ bộ nhớ (giống dòng trên)

Giải tham chiếu (Dereferencing):

Để lấy lại giá trị thực tế tại địa chỉ mà con trỏ đang giữ, bạn sử dụng lại toán tử * trước tên con trỏ.

string food = "Pizza";
string* ptr = &food;

cout << *ptr; // Kết quả: Pizza (Lấy giá trị tại địa chỉ ptr giữ)

Tại sao lại dùng Con trỏ?


Lời kết Module 5

Module 5 đã mở ra cánh cửa tiến vào “trái tim” của C++. Con trỏ có thể hơi khó hiểu lúc mới bắt đầu, nhưng khi đã làm chủ được nó, bạn sẽ kiểm soát được tài nguyên máy tính một cách cực kỳ mạnh mẽ.

Trong Module 6, chúng ta sẽ học về Hàm (Functions) - cách chia nhỏ chương trình thành các khối mã có thể tái sử dụng.

Hẹn gặp lại các bạn!

Previous
Tự học C++ - Module 6: Hàm (Functions) chuyên sâu
Next
Tự học C++ - Module 4: Vòng lặp và Mảng