I. Tham trị (pass parameters by values)
Lấy ví dụ về m^n.
VD1:
VD2:
Qua hai dụ trên, ta thấy việc dùng hàm power với biến x,y và hàm main với biến m,n. Sau khi chạy chương trình giá trị của x bằng giá trị của m, giá trị của y bằng giá trị của m, kết quả ở ví dụ 2 đưa ra đúng với kết quả đưa ra ở ví dụ 1 không dùng function.
Để giải thích điều này:
Ví dụ hai biến m,n trong hàm main nằm ở hai ô nhớ là 90 và 94 sau khi được khởi tạo, hai biến x,y của hàm power lại là nằm ở hai ô nhớ khác là 100 và 104 khi được khởi tạo, nhưng sau khi hàm power được gọi trong hàm main (ví dụ 2) thì khi chạy chương trình giá trị của ô 90 và 94 sẽ được truyền vào hai ô 100 và 104 tương ứng theo cơ chế truyền tham trị. Kết quả thực thi thuật toán ở ví dụ 2 không có gì thay đổi so với ví dụ ban đầu, vì giá trị đầu vào là giống nhau.
II. Tham biến (pass parameters by references)
VD1:
Chương trình đổi chỗ hai biến m và n.
VD2:
Dùng function để đổi chỗ hai biến m,n nhưng không thu được kết quả như mong muốn vì giá trị của hai ô nhớ m,n truyền qua giá trị của hai ô nhớ tương ứng x,y. Sau khi lệnh gọi hàm swap được thực thi việc đổi chỗ chỉ thực hiện trong hàm swap mà không thực hiện trong hàm main. Vì vậy sau khi in ra giá trị của m và n không đổi. Đây chính là cơ chế truyền tham trị.
Đề giải quyết vấn đề trên ta dùng một cơ chế khác là cơ chế truyền tham biến.
VD3:
Thêm ký hiệu & vào hai biến x,y (int &x, int &y) định nghĩa &x, &y là khai báo địa chỉ trên vùng bộ nhớ trong hàm swap. Giải thích cơ chế: ví dụ có hai vùng bộ nhớ là m và n trong hàm main tương ứng với hai ô 90 và 94. Khi thực thi lấy địa chỉ của m là ô 90 để vào cho x, n là ô 94 để vào cho y, thực hiện việc đổi chỗ tg gán bằng giá trị của ô 90, giá trị ô 90 gán bằng giá trị ô 94, giá trị ô 94 gán bằng tg. Kết quả đưa ra đúng với ví dụ 1.
III. Tổng Kết
Hiểu được hai cơ chế truyền là truyền tham trị và truyền tham biến. Nếu chương trình cần tham số đầu vào cho quá trình tính toán thì ta dùng tham trị, nếu cần tham số đầu ra làm thay dổi giá trị tham số đấy ta dùng tham biến.