[Buổi 19][Con trỏ][Lab] Bài 1: Pointer Snapshot
Pointer Snapshot
Bối cảnh
Một bài mô phỏng nhỏ giúp bạn thấy pointer đang trỏ tới biến nào và dereference thay đổi biến gốc ra sao.
Bạn không cần in địa chỉ thật. Hãy dùng pointer để thực hiện chuỗi thao tác rồi in giá trị cuối.
Yêu cầu
- Đọc x, y và ba số a, b, c.
- Tạo
int* p = &x; cộng a vào*p. - Cho
p = &y; cộng b vào*p. - Cho
p = &x; gán*p = *p + c. - In
x y.
Yêu cầu tổ chức code
Phải có ít nhất một biến pointer và cập nhật x/y thông qua dereference.
Online Judge chủ yếu chấm output. Giảng viên có thể review thêm cấu trúc code để xác nhận học viên luyện đúng kỹ năng của buổi.
Input
Một dòng gồm 5 số nguyên x y a b c.
Output
Một dòng gồm giá trị cuối của x y.
Ràng buộc
|x|,|y|,|a|,|b|,|c| ≤ 10^9; kết quả vừa long long, nhưng bài dùng int với test an toàn.
Ví dụ 1
Input
10 20 3 4 5
Output
18 24
Giải thích
Hai biến đầu là x=10, y=20. Pointer trỏ tới các biến này, sau đó các phép cập nhật qua dereference làm x tăng thêm 8 và y tăng thêm 4. Vì thay đổi xảy ra trên vùng nhớ của biến gốc chứ không phải bản sao, trạng thái cuối là 18 24. Ví dụ kiểm tra đúng mối quan hệ address → pointer → dereference → value.
Ví dụ 2
Input
0 0 1 2 3
Output
4 2
Giải thích
Với x=0, y=0, các giá trị cập nhật lần lượt khiến x thành 4 và y thành 2. Dù ban đầu bằng 0, pointer vẫn trỏ tới địa chỉ hợp lệ của hai biến; dereference ghi trực tiếp vào đó nên output là 4 2.
Thông tin học tập
- Module: M06
- Buổi: B19
- Loại bài: LAB
- Độ khó: Easy
- Concepts: pointers, address-of, dereference, pointer reassignment
- Giới hạn kiến thức: B01-B19
- Time limit: 1 second(s)
- Memory limit: 256 MB
- Point: 100
Comments