- Sau khi gọi hàm, ta muốn a nhận giá trị của b, còn b nhận giá trị cũ của a, trong đó các tham số x và y là địa chỉ của các biến cần hoán chuyển nội dung, còn *x và *y chính là các biến mà địa chỉ của chúng lưu tương ứng trong x và y.
- Đối với lời gọi hàm thì địa chỉ của biến a được chuyến vào x (tức là lúc đó x = &a), còn địa chỉ của biến b được chuyển vào y(tương đương y = &b).
-> Do vậy *x nghĩa là *(&a) chính là a, còn *y chính là *(&b) hay là b
void HoanVi(int* x, int* y) // int* x = &a; int* y = &b;
{
int temp = *x;
*x = *y;
*y = temp;
}
void main()
{
int a = 1;
int b = 2;
HoanVi(&a, &b);
cout << "a = " << a <<" ,b = " << b;
}
0 nhận xét:
Đăng nhận xét