Current date May 18, 2026
Tự học C++

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

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

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ỏ?

  • Cho phép thao tác trực tiếp với bộ nhớ.
  • Giúp truyền mảng và dữ liệu lớn vào hàm một cách hiệu quả (không cần copy dữ liệu).
  • Là nền tảng để xây dựng các cấu trúc dữ liệu phức tạp như Linked List, Trees.

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!

Share URL copied

Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Active0
AI3
AI & Automation10

Exclusives

Lifestyle

Related Articles

Tự học C++ – Module 10: Dự án tổng kết và Con đường phía trước

Tổng kết series tự học C++ bằng một dự án quản lý...

Tự học C++ – Module 9: Xử lý Tệp và Ngoại lệ

Học cách lưu trữ dữ liệu bền vững bằng File I/O (fstream)...

Tự học C++ – Module 8: Các trụ cột của OOP

Tìm hiểu sâu về 3 trụ cột quan trọng nhất của OOP...

Tự học C++ – Module 7: Lập trình hướng đối tượng (OOP) cơ bản

Bước vào thế giới OOP với Classes và Objects. Học cách đóng...