Tham số và đối số

C++ hỗ trợ hai kiểu tham số: giá trị và tham chiếu. Tham số giá trị nhận một sao chép giá trị của đối số được truyền tới nó. Ket quả là, nếu hàm có bất kỳ chuyến đối nào tới tham số thì vẫn không tác động đến đối số. Ví dụ, trong chương trình sau:

include <iostream>

using namespace std;

void Foo(int num)

{

num = 0;

cout << "num = " << num << endl;

}

main(void)

{

int x = 10;

Foo(x);

cout << "x = " << x << endl;

}

Tham số duy nhất của hàm Foo là một tham số giá trị. Đến lúc mà hàm này được thực thi thì num được sử dụng nưh một biến cụ bố bên trong hàm. Khi hàm được gọi và x được truyền tới nó, num nhâm một sao chép giá trị của x. Kết quả là mặc dù được đặt về 0 bởi hàm nhưng vẫn không có tác động lên x. Chương trình sẽ cho kết quả như sau:

num = 0

x = 10

Trái lại, tham số tham chiếu nhận các đối số được truyền tới nó và làm trực tiếp trên đối số đó. Bất kỳ chuyển đối nào được tạo ra bởi hàm tới tham số tham chiếu đều tác động trực tiếp lên đối số. Bên trong ngữ cảnh của các lời gọi hàm, hai kiểu truyền đối số tương ứng được gọi là truyền-bằng-giá trị và truyền-bằng-tham cbiếu. Thật là hoàn toàn hợp lệ cho một hàm truyền-bằng-giá trị đối với một vài tham số và truyền-bằng-tham chiếu cho một vài tham số khác. Trong thực tế thì truyền bằng giá trị thường được sử dụng nhiều hơn.

results matching ""

    No results matching ""