[C++]. Tham Chiếu Và Tham Trị

image

1. Truyền Tham Trị

Truyền tham trị - Pass by value là hình thức xây dựng tham số phổ biến cho hàm, như trong bài học trước về hàm thì mình đã chú ý về việc giá trị của đối số sẽ được gán cho tham số khi lời gọi hàm được thực hiện.

Xem xét ví dụ sau bạn sẽ hiểu rõ hơn về tham số và đối số, từ đó sẽ nắm được logic khi gọi hàm với cách truyền tham trị

Ở đây mình dùng toán tử địa chỉ (&) để in ra địa chỉ của biến trong bộ nhớ máy tính, địa chỉ thường được lưu dưới dạng số hexa.

Mã nguồn :

#include "iostream" using namespace std; void thaydoi(int n){ cout << "Dia chi cua n trong bo nho may tinh : " << &n << endl; n += 100; cout << "Gia tri cua n trong ham thay doi : " << n << endl; } int main(){ int m = 1000; cout << "Dia chi cua m trong bo nho may tinh : " << &m << endl; thaydoi(m); cout << "Gia tri cua m sau khi ham ket thuc : " << m << endl; return 0; }

Output :

Dia chi cua m trong bo nho may tinh : 0x6ffe1c Dia chi cua n trong bo nho may tinh : 0x6ffdf0 Gia tri cua n trong ham thay doi : 1100 Gia tri cua m sau khi ham ket thuc : 1000

Giải thích :

Kết luận : Khi hàm có tham số là tham trị thì đối số bạn truyền vào hàm và tham số của hàm là 2 biến khác nhau và việc bạn thay đổi tham số sẽ không ảnh hưởng gì tới đố số.

2. Truyền Tham Chiếu

Truyền tham chiếu - Pass by reference là cách thức xây dựng hàm với đối số là một tham chiếu, có thể hiểu đơn giản thì tham chiếu ở đây là địa chỉ của biến

Để xây dựng tham số là tham chiếu bạn thêm dấu & trước tên tham số khi xây dựng hàm.

Hàm khi truyền tham chiếu có thể giúp thay đổi giá trị của đối số sau khi lời gọi hàm kết thúc, hiểu đơn giản đây là phương pháp giúp hàm truy cập trực tiếp vào địa chỉ của đối số và thay đổi giá trị tại ô nhớ đó trong máy tính, dẫn đến giá trị của đối số sẽ bị thay đổi theo.

Xem xét ví dụ sau đây bạn sẽ hiểu rõ hơn về tham chiếu trong C++

Mã nguồn :

#include "iostream" using namespace std; void thaydoi(int &n){ cout << "Dia chi cua n trong bo nho may tinh : " << &n << endl; n += 100; } int main(){ int m = 1000; cout << "Dia chi cua m trong bo nho may tinh : " << &m << endl; thaydoi(m); cout << "Gia tri cua m sau khi ham ket thuc : " << m << endl; return 0; }

Output :

Dia chi cua m trong bo nho may tinh : 0x6ffe1c Dia chi cua n trong bo nho may tinh : 0x6ffe1c Gia tri cua m sau khi ham ket thuc : 1100

Giải thích :

Chú ý :

Ví dụ về việc hoán đổi giá trị của 2 biến thông qua hàm bằng tham chiếu và tham trị :

#include "iostream" using namespace std; void swap1(int a, int b){ int tmp = a; a = b; b = tmp; } void swap2(int &a, int &b){ int tmp = a; a = b; b = tmp; } int main(){ int x = 100, y = 200; swap1(x, y); cout << x << " " << y << endl; swap2(x, y); cout << x << " " << y << endl; return 0; }

Output :

100 200 200 100

Kết luận : Khi bạn cần xây dựng hàm và muốn những thay đổi trong hàm sẽ được giữ nguyên với đối số sau khi hàm kết thúc thì sử dụng truyền tham chiếu, cũng có một cách khác là sử dụng con trỏ nhưng bạn sẽ học kiến thức này sau.

Video Tutorial :

UkX6o68LNMs

Link nội dung: https://hnou.edu.vn/tham-so-gia-tri-la-gi-a20224.html