Hướng dẫn what is difference between call by value and call by reference in php? - sự khác biệt giữa call by value và call by reference trong php là gì?

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

  • Trong cuộc gọi theo phương thức giá trị Giá trị ban đầu không được sửa đổi, trong khi trong phương thức gọi theo phương thức tham chiếu, giá trị ban đầu được sửa đổi.
  • Trong cuộc gọi theo giá trị, một bản sao của biến được truyền, trong khi trong cuộc gọi theo tham chiếu, một biến được truyền.
  • Trong cuộc gọi theo giá trị, các đối số thực tế và chính thức sẽ được tạo ở các vị trí bộ nhớ khác nhau, trong khi trong cuộc gọi bằng tham chiếu, các đối số thực tế và chính thức sẽ được tạo ở cùng một vị trí bộ nhớ.
  • Gọi theo giá trị là phương thức mặc định trong các ngôn ngữ lập trình như C ++, PHP, Visual Basic Net và C#, trong khi cuộc gọi bằng tham chiếu chỉ được hỗ trợ trong ngôn ngữ Java.
  • Cuộc gọi theo các biến giá trị được truyền bằng phương thức đơn giản, trong khi cuộc gọi bằng các con trỏ tham chiếu được yêu cầu để lưu trữ địa chỉ của các biến.

Hướng dẫn what is difference between call by value and call by reference in php? - sự khác biệt giữa call by value và call by reference trong php là gì?

Trong các ngôn ngữ lập trình, các chức năng có thể được gọi theo hai cách: được gọi là cuộc gọi theo giá trị và cuộc gọi theo tham chiếu.

Phương thức gọi theo giá trị là gì?

Gọi theo phương thức giá trị sao chép giá trị của một đối số vào tham số chính thức của hàm đó. Do đó, các thay đổi được thực hiện đối với tham số của hàm chính không ảnh hưởng đến đối số.

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à các 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.

Phương thức gọi bằng phương pháp tham chiếu là gì?

Gọi theo phương thức tham chiếu sao chép địa chỉ của một đối số vào tham số chính thức. Trong phương thức này, địa chỉ được sử dụng để truy cập đối số thực tế được sử dụng trong lệnh gọi hàm. Nó có nghĩa là những thay đổi được thực hiện trong tham số thay đổi đối số vượt qua.

Trong phương pháp này, phân bổ bộ nhớ giống như các tham số thực tế. Tất cả các hoạt động trong hàm được thực hiện trên giá trị được lưu trữ tại địa chỉ của tham số thực tế và giá trị sửa đổi sẽ được lưu trữ tại cùng một địa chỉ.

C ví dụ mã của một cuộc gọi theo phương thức giá trị

void main() {
        int a = 10,
        void increment(int);
        Cout << "before function calling" << a;
        increment(a);
        Cout << "after function calling" << a;
        getch();

        void increment(int x) {
            int x = x + 1;
            Cout << "value is" << x;
        }

Output:

before function calling 10
value is 11
after function calling 1-0

Bởi vì biến được khai báo ‘a Khănin Main () khác với biến‘ X, trong tăng (). Trong chương trình này, chỉ có tên biến tương tự nhau, nhưng địa chỉ bộ nhớ của chúng là khác nhau và được lưu trữ ở các vị trí bộ nhớ khác nhau.

Ví dụ về mã Java của một cuộc gọi theo phương thức tham chiếu

Public static void main(string args[]) {
    int a = 10;
    System.out.println("Before call Value of a = ", a);
    Void increment();
    System.out.println("After call Value of a = ", a);
}

Void increment(int x) {
    int x = x + 1;
}

Output:

Before call Value of a =10
After call Value of a =11

Bởi vì biến được khai báo ’một trong đó đang tham khảo/ trỏ đến biến’ a, trong main (). Ở đây tên biến là khác nhau, nhưng cả hai đều chỉ/tham chiếu đến cùng các vị trí địa chỉ bộ nhớ.

Thông sốGọi theo giá trịGọi bằng cách tham khảo
Sự định nghĩaTrong khi gọi một hàm, khi bạn truyền các giá trị bằng cách sao chép các biến, nó được gọi là cuộc gọi của các giá trị.Trong khi gọi một hàm, trong ngôn ngữ lập trình thay vì sao chép các giá trị của các biến, địa chỉ của các biến được sử dụng, nó được gọi là cuộc gọi của các tài liệu tham khảo.
Tranh luậnTrong phương pháp này, một bản sao của biến được truyền.Trong phương pháp này, một biến chính được thông qua.
Hiệu ứngCác thay đổi được thực hiện trong một bản sao của biến không bao giờ sửa đổi giá trị của biến bên ngoài hàm.Thay đổi trong biến cũng ảnh hưởng đến giá trị của biến bên ngoài hàm.
Thay đổi giá trịKhông cho phép bạn thực hiện bất kỳ thay đổi nào trong các biến thực tế.Cho phép bạn thực hiện các thay đổi trong các giá trị của các biến bằng cách sử dụng các cuộc gọi chức năng.
Đi qua của biếnCác giá trị của các biến được truyền bằng phương pháp đơn giản.Các biến con trỏ được yêu cầu để lưu trữ địa chỉ của các biến.
Sửa đổi giá trịGiá trị ban đầu không được sửa đổi.Giá trị ban đầu được sửa đổi.
Vị trí bộ nhớĐối số thực tế và chính thức sẽ được tạo ở vị trí bộ nhớ khác nhau
will be created in different
memory location
Đối số thực tế và chính thức sẽ được tạo ở cùng một vị trí bộ nhớ
will be created in the same
memory location
Sự an toànĐối số thực tế vẫn an toàn vì chúng không thể được sửa đổi một cách tình cờ.
safe as they cannot be modified
accidentally.
Đối số thực tế không an toàn. Chúng có thể vô tình sửa đổi, vì vậy bạn cần xử lý các hoạt động đối số một cách cẩn thận.
Safe. They can be
accidentally modified, so you need to handle arguments operations carefully.
Mặc địnhMặc định trong nhiều ngôn ngữ lập trình như C ++. PHP. Visual Basic Net và C#.
languages like C++.PHP. Visual Basic NET, and C#.
Nó được hỗ trợ bởi hầu hết các ngôn ngữ lập trình như Java, nhưng không phải là mặc định.
programming languages like JAVA, but
not as default.

Ưu điểm của việc sử dụng phương thức gọi bằng giá trị trong c

Ưu điểm/lợi ích của cuộc gọi theo giá trị trong c:

  • Phương pháp này không thay đổi biến ban đầu, vì vậy nó đang bảo tồn dữ liệu.
  • Bất cứ khi nào một hàm được gọi là nó, không bao giờ ảnh hưởng đến nội dung thực tế của các đối số thực tế.
  • Giá trị của các đối số thực tế được truyền cho các đối số chính thức, vì vậy bất kỳ thay đổi nào được thực hiện trong đối số chính thức không ảnh hưởng đến các trường hợp thực tế.

Ưu điểm của việc sử dụng phương thức gọi bằng phương pháp tham chiếu

Ưu điểm của việc sử dụng phương pháp gọi bằng phương pháp tham chiếu:

  • Hàm có thể thay đổi giá trị của đối số, khá hữu ích.
  • Nó không tạo dữ liệu trùng lặp để chỉ giữ một giá trị giúp bạn lưu không gian bộ nhớ.
  • Trong phương pháp này, không có bản sao của đối số được thực hiện. Do đó nó được xử lý rất nhanh.
  • Giúp bạn tránh những thay đổi được thực hiện do nhầm lẫn
  • Một người đọc mã không bao giờ biết rằng giá trị có thể được sửa đổi trong hàm.

Nhược điểm của việc sử dụng phương thức CALL theo giá trị

Ở đây, là những nhược điểm chính/nhược điểm của một cuộc gọi theo phương thức giá trị:

  • Các thay đổi đối với các tham số thực tế cũng có thể sửa đổi các biến đối số tương ứng
  • Trong phương pháp này, các đối số phải là biến.
  • Bạn có thể trực tiếp thay đổi một biến trong một cơ thể chức năng.
  • Đôi khi đối số có thể là các biểu thức phức tạp
  • Có hai bản sao được tạo cho cùng một biến không hiệu quả bộ nhớ.

Nhược điểm của việc sử dụng phương thức cuộc gọi bằng phương thức tham chiếu

Ở đây, là những nhược điểm chính của việc sử dụng phương thức gọi theo phương pháp tham chiếu:

  • Đảm bảo không null mạnh. Một chức năng lấy một tham chiếu cần phải đảm bảo rằng đầu vào không phải là null. Do đó, kiểm tra null không cần phải được thực hiện.
  • Chuyển bằng tham chiếu làm cho chức năng không thuần túy về mặt lý thuyết.
  • Đảm bảo trọn đời là một vấn đề lớn với các tài liệu tham khảo. Điều này đặc biệt nguy hiểm khi làm việc với Lambdas và các chương trình đa luồng.

Cuộc gọi theo giá trị và cuộc gọi bằng cách tham khảo trong PHP với ví dụ là gì?

PHP cho phép bạn gọi chức năng theo giá trị và tham chiếu cả hai. Trong trường hợp gọi PHP theo giá trị, giá trị thực tế không được sửa đổi nếu nó được sửa đổi bên trong hàm. Hãy hiểu khái niệm về cuộc gọi theo giá trị bằng sự trợ giúp của các ví dụ.. In case of PHP call by value, actual value is not modified if it is modified inside the function. Let's understand the concept of call by value by the help of examples.

Cuộc gọi theo giá trị và cuộc gọi theo giá trị tham chiếu là gì?

Gọi theo giá trị. Gọi bằng cách tham khảo. Trong khi gọi một hàm, chúng tôi truyền các giá trị của các biến cho nó. Các chức năng như vậy được gọi là cuộc gọi của các giá trị. Trong khi gọi một hàm, thay vì truyền các giá trị của các biến, chúng tôi chuyển địa chỉ của các biến (vị trí của các biến) cho hàm được gọi là cuộc gọi của các tài liệu tham khảo.While calling a function, we pass values of variables to it. Such functions are known as “Call By Values”. While calling a function, instead of passing the values of variables, we pass address of variables(location of variables) to the function known as “Call By References.

Sự khác biệt giữa cuộc gọi theo giá trị và cuộc gọi bằng cách tham khảo cho một ví dụ là gì?

Trong cuộc gọi theo giá trị, một bản sao của biến được truyền, trong khi trong cuộc gọi theo tham chiếu, một biến được truyền. Trong cuộc gọi theo giá trị, các đối số thực tế và chính thức sẽ được tạo ở các vị trí bộ nhớ khác nhau, trong khi trong cuộc gọi bằng tham chiếu, các đối số thực tế và chính thức sẽ được tạo ở cùng một vị trí bộ nhớ.. In Call by value, actual and formal arguments will be created in different memory locations, whereas in Call by reference, actual and formal arguments will be created in the same memory location.

Cuộc gọi bằng cách tham khảo trong PHP là gì?

Trong trường hợp cuộc gọi PHP bằng tham chiếu, giá trị thực được sửa đổi nếu nó được sửa đổi bên trong hàm.Trong trường hợp như vậy, bạn cần sử dụng & biểu tượng (ampersand) với các đối số chính thức.& Đại diện cho tham chiếu của biến.Hãy hiểu khái niệm cuộc gọi bằng cách tham khảo bằng sự trợ giúp của các ví dụ.actual value is modified if it is modified inside the function. In such case, you need to use & (ampersand) symbol with formal arguments. The & represents reference of the variable. Let's understand the concept of call by reference by the help of examples.