Thắc mắc về truyền con trỏ và truyền reference vào hàm C++

Chào mọi người, chuyện là em đang tự học c++ trên visual studio 2019, khi viết chương trình thì em có thấy một chuyện là khi em viết hàm trong file chứa main và truyền vào nó con trỏ thì khi dùng phải truyền vào địa chỉ nhưng nếu em viết hàm cũng truyền vào con trỏ nhưng trong một file riêng thì khi gọi hàm đó trong main thì lại có thể truyền vào nó địa chỉ hoặc biến đều được, tại sao vậy ạ?


Chương trình trên chạy bình thường nếu đổi swap(a,b) thành swap(&a,&b) nhưng nếu truyền vào hàm sum(a,b) thì nó lại không chay được.

http://www.cplusplus.com/reference/algorithm/swap/
Swap truyền bằng tham chiếu (reference), trong khi hàm sum của bạn truyền bằng con trỏ (hai tham số a, b là con trỏ).
Trong lời gọi hàm, vì swap dùng tham chiếu nên có thể truyền swap(&a, &b), hoặc viết gọn swap(a, b) đều được. Nhưng khi truyền bằng con trỏ thì cần truyền địa chỉ cho nó, phải ghi là sum(&a, &b) chứ không phải sum(a, b).

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?