Hướng dẫn what are the advantages of call by value in php - những lợi thế của cuộc gọi theo giá trị trong php là gì
Cải thiện bài viết Show
Lưu bài viết Các chức năng có thể được gọi theo hai cách: gọi theo giá trị hoặc gọi theo tham chiếu. Hai cách này thường được phân biệt bởi loại giá trị được truyền cho chúng dưới dạng tham số.Call by Value or Call by Reference. These two ways are generally differentiated by the type of values passed to them as parameters. Các tham số được truyền đến hàm được gọi là tham số thực tế trong khi các tham số nhận được theo hàm được gọi là tham số chính thức. Gọi theo giá trị: Trong phương thức chuyển tham số này, các giá trị của các tham số thực tế được sao chép vào các tham số chính thức của hàm và hai loại tham số được lưu trữ ở các vị trí bộ nhớ khác nhau. Vì vậy, bất kỳ thay đổi nào được thực hiện trong các chức năng bên trong không được phản ánh trong các tham số thực tế của người gọi.: In this parameter passing method, values of actual parameters are copied to function’s formal parameters and the two types of parameters are stored in different memory locations. So any changes made inside functions are not reflected in actual parameters of the caller. Gọi bằng tham chiếu: Cả hai tham số thực tế và chính thức đều đề cập đến cùng một vị trí, do đó, bất kỳ thay đổi nào được thực hiện bên trong hàm thực sự được phản ánh trong các tham số thực tế của người gọi.: Both the actual and formal parameters refer to the same locations, so any changes made inside the function are actually reflected in actual parameters of the caller.
Lưu ý: Trong C, chúng tôi sử dụng con trỏ để đạt được cuộc gọi bằng cách tham khảo. Trong C ++, chúng ta có thể sử dụng con trỏ hoặc tài liệu tham khảo để vượt qua tham chiếu. Trong Java, các loại nguyên thủy được truyền dưới dạng giá trị và các loại không nguyên thủy luôn là tài liệu tham khảo.In C, we use pointers to achieve call by reference. In C++, we can either use pointers or references for pass by reference. In Java, primitive types are passed as values and non-primitive types are always references. Nếu bạn đang chuyển các đối số cho một hàm bằng cách sử dụng kỹ thuật ‘cuộc gọi theo giá trị, thì hãy thay đổi các biến bên trong hàm won đã ảnh hưởng đến các giá trị ban đầu của các biến đó. Nếu bạn chuyển các đối số cho một hàm bằng cách sử dụng kỹ thuật ‘cuộc gọi bằng cách tham chiếu, thì các thay đổi thành các biến bên trong hàm sẽ ảnh hưởng đến các giá trị ban đầu của các biến đó. Trong phần này, chúng tôi sẽ thảo luận chi tiết về các kỹ thuật này. Chúng tôi cũng sẽ cố gắng xác định sự khác biệt giữa hai kỹ thuật này.
Biểu đồ so sánh
Cuộc gọi theo giá trị là gì?Ưu điểm của cuộc gọi theo giá trị Thí dụ LƯU Ý: Với cách tiếp cận giữa các giá trị, chúng ta chỉ có thể chuyển các biến với kiểu dữ liệu nguyên thủy (chỉ số nguyên, ký tự và chuỗi).: With the call-by-value approach, we can pass variables with the primitive data type (integer, character, and string ) only. Ưu điểm của cuộc gọi theo giá trị
Ví dụ về cuộc gọi theo giá trịHãy cùng xem một ví dụ để hiểu ngắn gọn điều này. //example in Java class check { void change( int i, int j) { i = i*i; j = j/2; System.out.println( "value of parameter inside the function"); System.out.println( " value of 'i' which accepts the value of argument 'a' " +i); System.out.println( " value of 'j' which accepts the value of argument 'b' " +j); } } public class call_by_value { public static void main(String args[]) { int a=12, b=20; check C= new check(); System.out.println("value of 'a' and 'b' before function call - " + a +" " +b); C.change(a,b); //call by value. System.out.println("value of 'a' and 'b' after function call - " + a +" " +b); } } //output value of 'a' and 'b' before function call - 12 20 value of parameter inside the function value of 'i' which accepts the value of argument 'a' 144 value of 'j' which accepts the value of argument 'b' 10 value of 'a' and 'b' after function call - 12 20 Cuộc gọi là gì bằng tài liệu tham khảo là gì?Gọi theo phương thức tham chiếu chuyển một tham chiếu/địa chỉ của các biến đến hàm dưới dạng tham số thực tế. Ở đây, tham số thực tế và chính thức có chung vị trí bộ nhớ. Trong các cuộc gọi chức năng, địa chỉ của các biến trong các tham số thực tế được sao chép vào các biến con trỏ của các tham số chính thức. Tham số chính thức của chức năng đề cập đến giá trị ban đầu của biến. Vì vậy, bất kỳ thay đổi nào được thực hiện đối với các tham số chính thức đều ảnh hưởng đến giá trị ban đầu của biến. Trong C ++ và Java, rất phổ biến để truyền đối tượng vào hàm/phương thức và các đối tượng luôn được truyền bởi tài liệu tham khảo của nó. Do đó, các thay đổi được thực hiện đối với đối tượng bên trong hàm/phương thức ảnh hưởng đến đối tượng được sử dụng để gọi hàm/phương thức đó. LƯU Ý: Chúng tôi chuyển các biến tham chiếu đến hàm gọi với phương thức ‘cuộc gọi bằng phương thức tham chiếu. Phương pháp này tạo ra một bí danh của các tham số chính thức cho các tham số thực tế. Vì vậy, điều này biểu thị rằng hàm được gọi không tạo ra bản sao giá trị của riêng mình. Thay vào đó, nó đề cập đến các giá trị ban đầu với sự trợ giúp của tên tham chiếu. Do đó, chức năng liên quan đến dữ liệu gốc và các thay đổi được thực hiện đối với dữ liệu gốc phản ánh lại trong dữ liệu được tham chiếu.: We pass reference variables to the calling function with the ‘call by reference’ method. This method creates an alias of the formal parameters to the actual parameters. So this signifies that the called function does not create its own copy of values. Instead, it refers to the original values with the help of reference names. Đặc điểm tham chiếu tham chiếu
Ví dụ về cuộc gọi bằng cách tham khảoCác đoạn sau đây cho thấy cách chính xác để gọi bằng cách tham chiếu. //example in C++ #include |