You are on page 1of 2

CHƯƠNG 6: FUNCTIONS

1. So sánh các loại truyền tham số:


 By Value:

Thay đổi được thực hiện cho tham số chính thức không được truyền trở lại cho người gọi. Mọi sửa
đổi đối với biến tham số chính thức bên trong hàm hoặc phương thức được gọi chỉ ảnh hưởng đến
vị trí lưu trữ riêng biệt và sẽ không được phản ánh trong tham số thực trong môi trường gọi.

Ví dụ:

x = 0;
f(x); {call-by-value giá trị x không đổi}
z = x + 1; {có thể thay thế bằng z = 1 khi tối ưu hóa}

 By Reference:

Các thay đổi được thực hiện cho tham số chính thức được truyền trở lại cho người gọi thông qua
truyền tham số. Mọi thay đổi đối với tham số chính thức được phản ánh trong tham số thực tế trong
môi trường gọi vì tham số chính thức nhận được tham chiếu (hoặc con trỏ) đến dữ liệu thực tế.

Ví dụ:

void swap(int &x, int &y){


int temp;
temp = x;
x = y;
y = temp;
}
swap(n,k);

 By Result:

Ngay trước khi điều khiển được chuyển trở lại cho người gọi hàm, giá trị của tham số
chính thức được truyền trở lại tham số thực tế. Nói chung, kỹ thuật kết quả được thực
hiện bằng bản sao.

Ví dụ:

void p(int value-result x, int value-result y){


x = x + 1;
y = y + 1;
}
p(z,z);
 By Value – Result:

Nó là sự kết hợp của Pass-by-Value và Pass-by-result. Ngay trước khi điều khiển được
chuyển trở lại cho người gọi, giá trị của tham số chính thức được truyền trở lại tham số
thực tế.

Ví dụ:

void fun(int x, int y) {


b=x+y;
x=a+y;
y=b+x;
}
fun(b,b);

 By Name:

Tham số chính thức chỉ là một chỗ giữ cho tham số thực tế. Tại thời điểm của cuộc gọi,
tham số chính thức được liên kết với mã của biểu thức đại diện cho tham số thực tế.

Ví dụ:

bool or(bool name a, bool name b){


if (a)
return true;
else
return b;
}
if (or(x==0 , 1/x > 0.3)) ...

You might also like