[Buổi 19][Con trỏ][HW] Bài 1: Swap qua con trỏ


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Swap qua con trỏ

Bối cảnh

Một chương trình điều khiển có hai biến trạng thái cần đổi giá trị cho nhau thông qua hàm nhận pointer. Về mặt kết quả, bài toán chỉ là swap hai số, nhưng mục tiêu của B19 là nhìn rõ cơ chế: hàm không nhận bản sao của hai biến mà nhận địa chỉ của chúng; khi dereference và gán, vùng nhớ của biến gốc trong main thay đổi trực tiếp.

Homework Easy này cố ý không dùng std::swap hay reference để người học thực hành chính xác chuỗi &variable → pointer parameter → *pointer. Sau khi hoàn thành, học viên phải giải thích được vì sao thay đổi trong hàm vẫn tồn tại khi hàm kết thúc và vì sao pointer phải trỏ đến một địa chỉ hợp lệ trước khi dereference.

Yêu cầu

  1. Viết hàm nhận long long* a, long long* b.
  2. Đổi giá trị tại hai địa chỉ.
  3. In hai số sau swap.

Input

Hai số nguyên a b.

Output

Hai số sau khi đổi chỗ.

Ràng buộc

|a|,|b| ≤ 10^18.

Ví dụ 1

Input

1 2

Output

2 1

Giải thích

Ban đầu x=1, y=2. Pointer thứ nhất trỏ tới x và pointer thứ hai trỏ tới y. Biến tạm giữ 1; *a=*b làm x thành 2; *b=temp làm y thành 1. Vì thao tác ghi trực tiếp lên biến gốc, output là 2 1.

Ví dụ 2

Input

-5 7

Output

7 -5

Giải thích

Với x=-5, y=7, cùng ba bước swap qua dereference đưa 7 vào vùng nhớ của x và -5 vào vùng nhớ của y. Dấu âm chỉ là giá trị dữ liệu, không làm thay đổi cơ chế pointer, nên output là 7 -5.

Thông tin học tập

  • Module: M06
  • Buổi: B19
  • Loại bài: HOMEWORK
  • Độ khó: Easy
  • Concepts: pointers, dereference, functions, mutation
  • Giới hạn kiến thức: B01-B19
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo