Menu
CoddyTech

Toán tử giải tham chiếu (*)

Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 4 trên 63.

Bây giờ bạn đã biết cách lưu địa chỉ vào con trỏ, bạn cần học cách truy cập giá trị thực tế được lưu tại địa chỉ bộ nhớ đó. Toán tử giải tham chiếu (*) cho phép bạn «đi theo» con trỏ để lấy giá trị mà nó trỏ đến.

Khi đặt toán tử * trước một biến con trỏ, bạn truy cập giá trị được lưu tại địa chỉ bộ nhớ mà con trỏ đang giữ. Hãy hình dung như thể bạn đang nói: "cho mình biết bên trong căn phòng ở địa chỉ này có gì".

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // In ra 25, giá trị của age

Điều quan trọng là hiểu rằng dấu hoa thị (*) có hai ý nghĩa khác nhau trong C. Khi khai báo một con trỏ như int *ptr;, dấu hoa thị cho biết ptr là một con trỏ. Khi dùng với một con trỏ đã có như *ptr, dấu hoa thị giải tham chiếu con trỏ để truy cập giá trị mà nó trỏ đến.

Toán tử giải tham chiếu rất cần thiết vì nó hoàn thiện chu trình con trỏ: bạn có thể lưu một địa chỉ vào con trỏ bằng &, rồi lấy giá trị tại địa chỉ đó bằng *. Nhờ vậy, bạn có thể gián tiếp truy cập và sửa đổi các biến thông qua địa chỉ bộ nhớ của chúng.

challenge icon

Thử thách

Dễ

Viết một chương trình C minh họa đầy đủ quy trình làm việc với con trỏ: khai báo, gán địa chỉ và giải tham chiếu. Chương trình của bạn cần:

  1. Khai báo một biến số nguyên tên là value và khởi tạo biến với giá trị 75
  2. Khai báo một biến số thực tên là price và khởi tạo biến với giá trị 19.99
  3. Khai báo một con trỏ đến số nguyên tên là value_ptr
  4. Khai báo một con trỏ đến số thực tên là price_ptr
  5. Dùng toán tử lấy địa chỉ để gán địa chỉ của value cho value_ptr
  6. Dùng toán tử lấy địa chỉ để gán địa chỉ của price cho price_ptr
  7. Dùng toán tử giải tham chiếu để in ra giá trị của value thông qua value_ptr
  8. Dùng toán tử giải tham chiếu để in ra giá trị của price thông qua price_ptr, với chính xác 2 chữ số thập phân

Đầu ra của bạn cần hiển thị các giá trị được giải tham chiếu theo định dạng sau:

Value through pointer: 75
Price through pointer: 19.99

Thử thách này kiểm tra mức độ hiểu biết của bạn về cách toán tử giải tham chiếu lấy giá trị ban đầu của biến bằng cách lần theo địa chỉ được lưu trong con trỏ.

Tự làm thử

#include <stdio.h>

int main() {
    // TODO: Viết code của bạn ở đây
    // 1. Khai báo và khởi tạo các biến (variables)
    // 2. Khai báo các con trỏ
    // 3. Gán địa chỉ cho các con trỏ
    // 4. In ra các giá trị (values) thu được khi giải tham chiếu con trỏ
    
    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch C online