Cho hai số a và b. Cần viết hàm tính cả (a+b) và (a-b). Vì hàm C chỉ trả về một giá trị, ta dùng tham số đầu ra (output parameter) qua con trỏ. Hàm sẽ cập nhật a thành a+b, b thành a-b. Khi gọi hàm, truyền địa chỉ của a và b.
Ví dụ: a=5, b=8 → a+b=13, a-b=-3.
Giải thuật
- Hàm solve(int *a, int *b): temp = *a + *b; *b = *a - *b; *a = temp
- Trong main: gọi solve(&a, &b), sau đó in a và b
Ví dụ minh họa
#include <stdio.h>
int solve(int *a, int *b) {
int temp = *a + *b;
*b = *a - *b;
*a = temp;
}
int main() {
int a = 5, b = 8;
solve(&a, &b);
printf("a + b = %d and a - b = %d", a, b);
return 0;
}
Đầu vào
a = 5, b = 8
Đầu ra
a + b = 13 and a - b = -3