Sự khác biệt giữa cuộc gọi theo giá trị và cuộc gọi theo tham chiếu

Sự khác biệt chính - Gọi theo giá trị so với Gọi theo tham chiếu
 

Nhiều ngôn ngữ lập trình sử dụng các chức năng. Hàm là một tập hợp các câu lệnh để thực hiện một nhiệm vụ cụ thể. Mã chính có thể được chia thành một số chức năng và gọi chúng. Có hai cách gọi một hàm như gọi theo giá trị và gọi theo tham chiếu. Trong cuộc gọi theo phương thức giá trị, các bản sao của các biến được truyền vào hàm. Nếu có thay đổi giá trị của hàm, nó không thay đổi giá trị ban đầu. Trong cuộc gọi bằng tham chiếu, những thay đổi của biến bên trong hàm phản ánh giá trị ban đầu. Các sự khác biệt chính giữa cuộc gọi theo giá trị và cuộc gọi theo tham chiếu là, trong cuộc gọi theo giá trị, bản sao của các biến được truyền cho hàm và trong lệnh gọi theo tham chiếu, địa chỉ của các biến được truyền cho hàm.  Bài viết này thảo luận về sự khác biệt giữa cuộc gọi theo giá trị và cuộc gọi theo tham chiếu.

NỘI DUNG

1. Tổng quan và sự khác biệt chính
2. Gọi theo giá trị là gì
3. Gọi bằng cách tham khảo là gì
4. Điểm tương đồng giữa cuộc gọi theo giá trị và cuộc gọi theo tham chiếu
5. So sánh cạnh nhau - Gọi theo giá trị so với gọi theo tham chiếu ở dạng bảng
6. Tóm tắt

Gọi theo giá trị là gì?

Trong cuộc gọi theo giá trị, bản sao của các biến được truyền cho hàm. Hàm có thể thay đổi giá trị sao chép đó nhưng nó không thay đổi giá trị ban đầu. Khái niệm này có thể dễ dàng được hiểu bằng cách hoán đổi chương trình hai số. Tham khảo chương trình C bên dưới được viết bằng môi trường Code Blocks.

Hình 01: Chương trình hoán đổi hai số

Theo chương trình được đưa ra dưới đây, biến 'a' có giá trị 20 và biến 'b' có giá trị 30. Khi gọi hàm hoán đổi (a, b), hai giá trị này được truyền cho hàm hoán đổi. Trong chức năng hoán đổi, 'a' được sao chép vào 'x' và 'b' được sao chép vào 'y'. Bây giờ, 'x' đang có giá trị 20 và 'y' đang có giá trị 30. Sử dụng biến tạm thời, hai giá trị được hoán đổi. Khi in giá trị 'x' và 'y' bên trong hàm hoán đổi đó, đầu ra sẽ cho 30 cho 'x' và 20 cho 'y'. Khi quá trình thực hiện chức năng hoán đổi kết thúc, điều khiển sẽ quay trở lại chức năng chính. Khi in các giá trị của 'a' và 'b', trong chức năng chính, kết quả sẽ là các giá trị ban đầu. Chúng là 20 cho 'a' và 30 cho 'b'. Thay đổi được thực hiện bằng chức năng trao đổi không phản ánh trong chương trình chính.

Hình 02: Đầu ra của chương trình hoán đổi

'x' và 'y' bên trong hàm hoán đổi có các giá trị hoán đổi là 30 và 20 nhưng các giá trị đó không thể được sử dụng trong chương trình chính. Mặc dù 'x' và 'y' đang có các giá trị hoán đổi, chúng là các biến cục bộ thành hàm hoán đổi và không thể được truy cập bởi hàm chính. Để tránh vấn đề này, có thể sử dụng cuộc gọi bằng cách tham khảo.

Gọi theo tham chiếu là gì?

Trong phương thức này, địa chỉ của các biến được gửi đến hàm. Tham khảo chương trình C bên dưới được viết bằng môi trường Code Blocks.

Hình 03: Hoán đổi hai số bằng cách sử dụng con trỏ

Theo ví dụ đã cho bên dưới, giá trị của 'a' là 20 và giá trị của 'b' là 30. Thay vì chuyển các bản sao của 'a' và 'b', lập trình viên có thể gửi địa chỉ của 'a' và 'b 'sử dụng chức năng, trao đổi (& a, & b).

Hình 04: Đầu ra của chương trình hoán đổi sử dụng con trỏ

Trong trao đổi, hàm nên sử dụng các con trỏ vì các địa chỉ được truyền và các địa chỉ đó phải được giữ bởi các con trỏ. Bên trong chức năng, địa chỉ của 'a' được sao chép thành 'x' và địa chỉ của 'b' được sao chép thành 'y'. Sử dụng biến tạm thời, các giá trị 'x' và 'y' được hoán đổi. Trong cuộc gọi này theo phương thức tham chiếu, các thay đổi bên trong hàm hoán đổi phản ánh trong chương trình chính. In các giá trị của 'a' và 'b' trong chính sẽ cho các giá trị được hoán đổi. Bây giờ đầu ra của 'a' là 30 và 'b' là 20. Vì hàm đang lấy địa chỉ của các biến, các thay đổi được thực hiện bên trong hàm ảnh hưởng đến các giá trị ban đầu.

Điểm tương đồng giữa cuộc gọi theo giá trị và cuộc gọi theo tham chiếu là gì?

  • Hai phương thức này được sử dụng để gọi hàm / phương thức.

Sự khác biệt giữa cuộc gọi theo giá trị và cuộc gọi theo tham chiếu là gì?

Gọi theo giá trị so với gọi theo tham chiếu

Trong cuộc gọi theo giá trị, các bản sao của các biến được truyền vào hàm để các thay đổi được thực hiện bên trong hàm sẽ không sửa đổi giá trị ban đầu. Trong cuộc gọi bằng tham chiếu, địa chỉ của các biến được truyền cho hàm, do đó, các thay đổi được thực hiện cho các biến bên trong hàm, sẽ sửa đổi giá trị ban đầu.
 Sửa đổi giá trị
Trong cuộc gọi theo giá trị, giá trị ban đầu không thay đổi. Trong cuộc gọi theo tham chiếu, các giá trị ban đầu đang thay đổi.

Tóm lược - Gọi theo giá trị so với Gọi theo tham chiếu

Gọi theo giá trị và gọi theo tham chiếu là các phương thức gọi hàm. Sự khác biệt giữa gọi theo giá trị và gọi theo tham chiếu là trong lệnh gọi theo giá trị, các bản sao của biến được truyền cho hàm và trong lệnh gọi theo tham chiếu, địa chỉ của các biến được truyền cho hàm. Sử dụng cuộc gọi theo giá trị hoặc cuộc gọi theo tham chiếu tùy thuộc vào nhiệm vụ cần thực hiện.

Tải xuống Phiên bản PDF của Cuộc gọi theo Giá trị so với Cuộc gọi theo Tham chiếu

Bạn có thể tải xuống phiên bản PDF của bài viết này và sử dụng nó cho mục đích ngoại tuyến theo ghi chú trích dẫn. Vui lòng tải xuống phiên bản PDF tại đây Sự khác biệt giữa Cuộc gọi theo Giá trị và Cuộc gọi theo Tham chiếu

Tài liệu tham khảo:

1. Thái Lan, Haresh. Gọi 11 theo giá trị so với gọi theo tham chiếu. YouTube, YouTube, ngày 24 tháng 12 năm 2015. Có sẵn tại đây