#include <stdio.h>
// Hàm nhận con trỏ kép (pointer to pointer)
void reassign_based_on_value(int **pp, int *n2_ptr) {
// **pp: Lấy giá trị mà con trỏ p đang trỏ tới
// *pp: Lấy địa chỉ mà con trỏ p đang lưu
int value = **pp; // Lấy giá trị tại địa chỉ mà p trỏ tới
// Kiểm tra giá trị chẵn hay lẻ
if (value % 2 == 0) {
// Nếu chẵn: cho p trỏ sang n2
*pp = n2_ptr;
}
// Nếu lẻ: giữ nguyên (p vẫn trỏ vào n1)
}
int main() {
int n1, n2;
scanf("%d %d", &n1, &n2);
int *p = &n1; // Ban đầu p trỏ vào n1
// Truyền địa chỉ của con trỏ p (&p) và địa chỉ của n2 (&n2)
reassign_based_on_value(&p, &n2);
printf("%d", *p); // In giá trị mà p đang trỏ tới
return 0;
}
Input
10 50
Expected Output
50