708 Stimmen

Was ist der Unterschied zwischen der Übergabe per Referenz und der Übergabe per Wert?

Was ist der Unterschied zwischen

  1. ein als Referenz übergebener Parameter
  2. einen als Wert übergebenen Parameter?

Könnten Sie mir bitte einige Beispiele nennen?

0 Stimmen

1 Stimmen

Wenn Sie nicht wissen, was ein Adresse o Wert ist dann siehe aquí

32voto

Than Skourtan Punkte 1591

Der einfachste Weg, dies zu erreichen, ist über eine Excel Datei. Nehmen wir an, Sie haben zwei Zahlen, 5 und 2, in den Zellen A1 und B1, und möchten die Summe dieser Zahlen in einer dritten Zelle, sagen wir A2, ermitteln.

Sie können dies auf zwei Arten tun.

  • Entweder durch Übergabe ihrer Werte an die Zelle A2 durch Tippen \= 5 + 2 in diese Zelle. Wenn sich in diesem Fall die Werte in den Zellen A1 oder B1 ändern, bleibt die Summe in A2 gleich.

  • Oder durch Übergabe der "Referenzen" der Zellen A1 und B1 an die Zelle A2 durch Tippen \= A1 + B1 . Wenn sich in diesem Fall die Werte in den Zellen A1 oder B1 ändern, ändert sich auch die Summe in A2.

22voto

Craig Punkte 35494

Bei der Übergabe per Referenz übergeben Sie im Grunde einen Zeiger auf die Variable. Bei der Übergabe per Wert übergeben Sie eine Kopie der Variablen.

In der Grundverwendung bedeutet dies normalerweise Referenzübergabe, Änderungen an der Variablen werden in der aufrufenden Methode gesehen, bei Wertübergabe nicht.

18voto

MetaGuru Punkte 40937

Die Wertübergabe sendet eine kopieren. der in der angegebenen Variablen gespeicherten Daten, und die Übergabe per Referenz sendet eine direkte Verbindung zur Variablen selbst.

Wenn Sie also eine Variable per Referenz übergeben und dann die Variable innerhalb des Blocks ändern, in den Sie sie übergeben haben, wird die ursprüngliche Variable geändert. Wenn Sie einfach einen Wert übergeben, kann die ursprüngliche Variable von dem Block, in den Sie sie übergeben haben, nicht geändert werden, aber Sie erhalten eine Kopie dessen, was sie zum Zeitpunkt des Aufrufs enthielt.

15voto

Hamed Naeemaei Punkte 5083

Schauen Sie sich dieses Foto an:

Im ersten Fall ( als Referenz übergeben ), ändert sich die externe Variable ebenfalls, wenn die Variable innerhalb der Funktion gesetzt oder geändert wird.

Aber im zweiten Fall ( nach Wert übergehen ), hat eine Änderung der Variablen innerhalb der Funktion keine Auswirkungen auf die externe Variable.

Zum Lesen des Artikels siehe dies lien .

Call by reference vs call by value

10voto

user326964 Punkte 408

Wertübergabe - Die Funktion kopiert die Variable und arbeitet mit einer Kopie (sie ändert also nichts an der ursprünglichen Variable)

Übergabe durch Referenz - Die Funktion verwendet die ursprüngliche Variable. Wenn Sie die Variable in der anderen Funktion ändern, ändert sie sich auch in der ursprünglichen Variable.

Beispiel (kopieren und verwenden/ selbst ausprobieren und sehen):

#include <iostream>

using namespace std;

void funct1(int a) // Pass-by-value
{
    a = 6; // Now "a" is 6 only in funct1, but not in main or anywhere else
}

void funct2(int &a)  // Pass-by-reference
{
    a = 7; // Now "a" is 7 both in funct2, main and everywhere else it'll be used
}

int main()
{
    int a = 5;

    funct1(a);
    cout << endl << "A is currently " << a << endl << endl; // Will output 5
    funct2(a);
    cout << endl << "A is currently " << a << endl << endl; // Will output 7

    return 0;
}

Macht es einfach, Leute. Walls of text kann eine schlechte Angewohnheit sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X