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

Trong lập trình trên cơ sở truyền tham số cho hàm người ta phân lời gọi hàm thành hai. Gọi theo giá trị và Gọi theo tham chiếu. Như tên gợi ý trong cả hai lời gọi, chúng tôi đang gọi hàm theo loại tham số trong một chúng tôi đang truyền giá trị thực của tham số và trong trường hợp khác, chúng tôi đang chuyển vị trí/tham chiếu của tham số

Sau đây là những khác biệt quan trọng giữa Gọi theo Giá trị và Gọi theo Tham chiếu

Sr. Không. KeyCall by ValueCall by Reference1Naming ConventionVì trong loại này, giá trị của tham số được chuyển cho lời gọi hàm do đó nó được đặt tên là Call by Value. Mặt khác, trong loại này, tham chiếu của tham số được truyền để gọi hàm nên nó được đặt tên là Gọi theo tham chiếu. 2Triển khai nội bộ Trong Gọi theo giá trị, giá trị của tham số mà chúng ta đã truyền trong khi gọi hàm sẽ được sao chép vào đối số cục bộ thực sự của hàm. Trong Gọi theo tham chiếu, địa chỉ vị trí/tham chiếu của tham số đã truyền được sao chép và gán cho đối số cục bộ của hàm để cả tham số đã truyền và đối số thực đều đề cập đến cùng một vị trí. 3 Hiệu ứng thay đổi giá trị của tham số đã truyền được sao chép vào đối số của hàm, do đó, bất kỳ thay đổi nào được thực hiện trong đối số bên trong hàm không được phản ánh trong tham số đã truyền. Vì cả đối số và tham số đã truyền đều đề cập đến cùng một vị trí, do đó mọi thay đổi được thực hiện đối với đối số bên trong hàm sẽ được phản ánh trong tham số đã truyền. 4Vị trí bộ nhớ được giới thiệu Vị trí bộ nhớ được giới thiệu cả tham số đã truyền và đối số thực của hàm là khác nhau. Vị trí bộ nhớ được tham chiếu bởi cả tham số đã truyền và đối số thực của hàm là như nhau. 5Ngôn ngữ được hỗ trợ. Gọi theo giá trị được hỗ trợ bởi các ngôn ngữ như. C++. PHP. Visual Basic NET và C#. Gọi theo tham chiếu chủ yếu được hỗ trợ bởi JAVA

Ví dụ về Gọi theo giá trị so với Gọi theo tham chiếu

theo giá trị. c

#include 
class ByValue{
   void swapByValue[int, int]; /* Prototype */
   int main[]{
      int n1 = 10, n2 = 20;
      swapByValue[n1, n2];
      printf["n1: %d, n2: %d
", n1, n2];    }    void swapByValue[int a, int b]{       int t;       t = a; a = b; b = t;    } }

đầu ra

n1: 10, n2: 20

Thí dụ

Theo tham khảo. c

#include 
class ByReference{
   void swapByReference[int*, int*];
   int main[]{
      int n1 = 10, n2 = 20;
      swapByReference[&n1, &n2];
      printf["n1: %d, n2: %d
", n1, n2];    }    void swapByReference[int *a, int *b]{       int t;       t = *a; *a = *b; *b = t;    } }

đầu ra

n1: 20, n2: 10

Trong một ngôn ngữ lập trình, người ta có thể gọi hàm theo hai cách. được gọi là Ô theo Giá trị và Gọi theo Tham chiếu. Cơ sở chung của sự khác biệt theo hai cách này là loại giá trị đi qua chúng dưới dạng tham số.  

Hướng dẫn cơ bản để bắt đầu luyện thi GATE của bạn
Tải xuống sách điện tử ngay bây giờ

Các tham số truyền vào hàm được gọi là tham số thực và các tham số mà hàm nhận được gọi là tham số hình thức. Bây giờ trước khi chúng ta tìm hiểu sự khác biệt giữa gọi theo giá trị và gọi theo tham chiếu, hãy tìm hiểu thêm một chút về hai điều này

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

Trong phương thức truyền tham số cụ thể này, các giá trị của tham số thực được sao chép vào tham số chính thức của hàm. Nó lưu trữ cả hai loại tham số ở các vị trí bộ nhớ khác nhau. Do đó, nếu một người thực hiện bất kỳ thay đổi nào bên trong hàm - thì nó không hiển thị trên các tham số thực của người gọi

Phương thức này chuyển một bản sao của đối số thực sang đối số chính thức của bất kỳ hàm nào được gọi. Trong trường hợp phương thức Gọi theo giá trị, mọi thay đổi hoặc thay đổi được thực hiện đối với các đối số chính thức trong hàm được gọi không ảnh hưởng đến các giá trị tổng thể của một đối số thực tế. Do đó, tất cả các đối số thực tế vẫn an toàn và không có sửa đổi ngẫu nhiên nào xảy ra với chúng

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

Trong trường hợp này, cả tham số chính thức và tham số thực tế đều đề cập đến một vị trí tương tự. Điều đó có nghĩa là nếu một người thực hiện bất kỳ thay đổi nào bên trong hàm, nó sẽ được phản ánh trong các tham số thực tế của người gọi

Phương thức này chuyển địa chỉ hoặc vị trí của các đối số thực tế cho các đối số chính thức của bất kỳ hàm nào được gọi. Điều đó có nghĩa là bằng cách truy cập các địa chỉ của đối số thực tế, người ta có thể dễ dàng thay đổi chúng từ bên trong hàm được gọi. Do đó, trong Gọi theo tham chiếu, có thể thực hiện các thay đổi đối với các đối số thực tế. Do đó, mã cần xử lý các đối số rất cẩn thận. Hoặc nếu không, có thể có kết quả không mong muốn và lỗi ngẫu nhiên

Sự khác biệt giữa Gọi theo Giá trị và Gọi theo Tham chiếu

Tham sốGọi theo giá trịGọi theo tham chiếuQuy ước đặt tênTrong trường hợp này, giá trị của tham số được chuyển để gọi hàm. Trong trường hợp gọi hàm, chúng ta chuyển trực tiếp giá trị của các biến cho hàm. Do đó, nó có tên là Gọi theo giá trị. Trong trường hợp này, tham chiếu của tham số chuyển cho lệnh gọi hàm. Bất cứ khi nào gọi một hàm, thay vì chuyển các giá trị của biến, chúng ta chuyển địa chỉ của nó [vị trí của các biến] cho hàm. Do đó, nó có tên là Gọi theo tham chiếu. Effects of Changes Nó sao chép giá trị của tham số đã truyền vào đối số của hàm. Do đó, bất kỳ thay đổi nào xảy ra trong bất kỳ đối số nào bên trong hàm đều không phản ánh trên tham số đã truyền. Cả tham số đã truyền và đối số đều đề cập đến một vị trí tương tự. Do đó, bất kỳ thay đổi nào xảy ra trong bất kỳ đối số nào bên trong hàm cũng phản ánh trong tham số đã truyền. Loại TruyềnPhương thức Gọi theo Giá trị truyền một bản sao của biến. Tại đây, giá trị của tất cả các biến được sao chép vào các biến giả tương ứng của chúng, còn được gọi là hàm. Phương thức Gọi theo Tham chiếu tự chuyển biến. Tại đây, nó sao chép địa chỉ của các biến thực trong hàm gọi vào các biến giả được gọi là hàm. Vị trí bộ nhớ [Được giới thiệu] Vị trí bộ nhớ được tham chiếu bởi các đối số thực tế và các tham số được truyền của hàm là khác nhau. Có nghĩa là, nó tạo ra các đối số chính thức và thực tế ở các vị trí bộ nhớ khác nhau. Vị trí bộ nhớ được tham chiếu bởi các đối số thực tế và các tham số được truyền của một hàm giống nhau. Có nghĩa là, nó tạo ra các đối số chính thức và thực tế trong cùng một vị trí bộ nhớ. Ngôn ngữ được hỗ trợCác ngôn ngữ như C++, C#. PHP, Visual Basic NET, v.v. , cung cấp hỗ trợ cho Gọi theo giá trị và sử dụng nó làm phương thức mặc định của chúng. Chỉ có ngôn ngữ JAVA mới hỗ trợ phương thức Call by Reference trong lập trình. Sửa đổi giá trịTrong phương thức Gọi theo giá trị, không có sửa đổi nào trong giá trị ban đầu. Trong phương thức Gọi theo tham chiếu, có một sửa đổi trong giá trị ban đầu. Triển khai nội bộ Trong trường hợp Gọi theo giá trị, khi chúng ta chuyển giá trị của tham số trong khi gọi hàm, nó sẽ sao chép chúng vào đối số cục bộ thực tế của hàm. Trong trường hợp Gọi theo tham chiếu, khi chúng ta chuyển địa chỉ/tham chiếu vị trí của tham số, nó sẽ sao chép và gán chúng cho đối số cục bộ của hàm. Do đó, cả tham số thực tế và tham số được truyền đều đề cập đến một vị trí tương tự. Phương thức TruyềnCác giá trị của các biến trong phương thức Gọi theo Giá trị truyền bằng một phương thức đơn giản hoặc một kỹ thuật Đơn giản. Việc xác định các biến con trỏ trong phương thức Gọi theo tham chiếu là điều kiện tiên quyết để lưu trữ địa chỉ của tất cả các biến. Thao tác với các biếnSử dụng phương pháp này, bất kỳ thay đổi nào xảy ra đối với các biến giả trong bất kỳ hàm được gọi nào đều không ảnh hưởng đến các giá trị của biến thực trong hàm gọi. Do đó, bạn không thể thay đổi hoặc thao tác các giá trị của biến thực tế bằng cách gọi hàm. Sử dụng phương pháp này, người ta có thể trực tiếp sử dụng các địa chỉ để truy cập các biến thực tế. Do đó, bất kỳ người dùng nào cũng có thể dễ dàng thay đổi hoặc thao tác các giá trị của biến thông qua các lệnh gọi hàm.

Hãy tiếp tục học và theo dõi để nhận thông tin cập nhật mới nhất về Bài thi GATE cùng với Tiêu chí Đủ điều kiện của GATE, GATE 2023, Thẻ Nhập học GATE, Giáo trình GATE cho CSE [Kỹ thuật Khoa học Máy tính], GATE Notes của CSE, Bảng câu hỏi GATE CSE, v.v.

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

Trong trường hợp Gọi theo giá trị, khi chúng ta chuyển giá trị của tham số trong khi gọi hàm, nó sẽ sao chép chúng vào đối số cục bộ thực tế của hàm. Trong trường hợp Gọi theo tham chiếu, khi chúng ta chuyển tham chiếu/địa chỉ vị trí của tham số, nó sẽ sao chép và gán chúng cho đối số cục bộ của hàm

Ví dụ gọi theo giá trị và gọi theo tham chiếu trong PHP là gì?

PHP cho phép bạn gọi hàm theo giá trị và cả tham chiếu . Trong trường hợp PHP gọi theo giá trị, giá trị thực tế không bị sửa đổi nếu nó được sửa đổi bên trong hàm. Hãy hiểu khái niệm cuộc gọi theo giá trị bằng sự trợ giúp của các ví dụ.

PHP có gọi theo tham chiếu không?

chuyển qua tham chiếu. Rõ ràng, PHP, giống như C++, là ngôn ngữ hỗ trợ chuyển qua tham chiếu . Theo mặc định, các đối tượng được truyền theo giá trị.

PHP có vượt qua giá trị hoặc tham chiếu không?

PHP hỗ trợ truyền đối số theo giá trị [mặc định], truyền theo tham chiếu và giá trị đối số mặc định . Danh sách đối số có độ dài thay đổi và Đối số được đặt tên cũng được hỗ trợ. Kể từ PHP 8. 0. 0, danh sách các đối số của hàm có thể bao gồm dấu phẩy ở cuối, dấu phẩy này sẽ bị bỏ qua.

Chủ Đề