Ví dụ | Giải thích |
#include void setNum(int a) { a = 0; } int main() { int b = 1; setNum(b); cout< return 0; } | Nếu tham số a trong hàm setNum được sử dụng như trên (đơn thuần là int a) thì nó được quy định là truyền theo tham trị. Khi truyền theo tham trị, giá trị của biến xuất hiện trong lời gọi hàm này, sẽ không thay đổi sau khi thoát ra khỏi hàm. Điều này có nghĩa là giá trị của biến b trước khi gọi hàm là 1, sau khi gọi hàm, nó vẫn nhận giá trị là 1. |
Nếu muốn thay đổi giá trị của biến khi truyền tham số trong hàm, ta sử dụng khai báo tham biến. Với việc quy định các tham số truyền theo tham biến, thì khi khai báo ta chỉ bổ sung vào dấu & ở trước tên tham số đó. Bằng cách này, các biến được sử dụng trong lời gọi hàm, sẽ bị làm thay đổi giá trị sau khi lời gọi hàm kết thúc.
Ví dụ | Giải thích |
#include void setNum(int &a) { a = 0; } int main() { int b = 1; setNum(b); cout< return 0; } | Nếu tham số a trong hàm setNum được sử dụng như trên (int &a) thì nó được quy định là truyền theo tham biến. Khi truyền theo tham biến, giá trị của biến xuất hiện trong lời gọi hàm này, sẽ thay đổi sau khi thoát ra khỏi hàm. Điều này có nghĩa là giá trị của biến b trước khi gọi hàm là 1, sau khi gọi hàm, nó vẫn nhận giá trị là 0. |
Ví dụ | Kết quả |
#include void swap(int &a, int &b) { int c = a; a = b; b = c; } int main() { int m = 1; int n = 2; swap(m, n); cout<<”m=”< return 0; } | m= 2, n=1 |
Lưu ý: bạn lưu ý rằng, cách truyền tham biến như trên chỉ áp dụng cho C++, trong C bạn chỉ có thể truyền tham biến nhờ con trỏ. Cách này, vẫn còn hoạt động tốt trên C++.
Ví dụ | Kết quả |
#include void swap(int *a, int *b) { int *c; *c = *a; *a = *b; *b = *c; } int main() { int m = 1; int n = 2; swap(&m, &n); cout<<”m=”< return 0; } |
No comments:
Post a Comment