Was ist der Unterschied zwischen Aufruf nach Wert, Aufruf nach Adresse und Aufruf nach Referenz unter den Themenfunktionen in C ++?


Antwort 1:

CALL BY VALUE:

Beim Aufruf nach Wert kann der ursprüngliche Wert nicht geändert werden. Wenn Sie der Funktion einen Wert übergeben, wird dieser lokal vom Funktionsparameter im Stapelspeicher abgelegt. Wenn Sie den Wert des Funktionsparameters ändern, wird er nur für die aktuelle Funktion geändert, hat außerhalb der aktuellen Funktion keine Auswirkung und ändert den Wert der Variablen innerhalb der Aufruferfunktion nicht.

#include 
using namespace std;

void swap_numbers (int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}

int main ()
{
int a = 1111, b = 0000;
Swap (a, b); // übergebe die Werte.
cout << "Wert von a:" << a << "Wert von b:" << b;
}

RUFEN SIE DURCH VERWEIS AN:

Die Methode call by reference kopiert die Referenz (Adresse) eines Arguments in die Parameter. Innerhalb der Funktion wird die Referenz verwendet, um auf das im Aufruf verwendete Argument zuzugreifen. Das heißt, wenn sich die Parameter ändern, ändern sich auch die Werte außerhalb der Funktion, da sich tatsächliche und formale Argumente den gleichen Adressraum im Speicher teilen.

#include 
using namespace std;

void swap_numbers (int * a, int * b) // Zeiger
{
int temp;
temp = * a;
* a = * b;
* b = temp;
}

int main ()
{
int a = 1111, b = 0000;
Swap (& a, & b); // Referenzen (Adressen) übergeben.
cout << "Wert von a:" << a << "Wert von b:" << b;
}

Antwort 2:

Ich werde Prototypen jeder Funktion schreiben

1)

int fun (int a, int b)

{

// nach Wert aufrufen

hier wird das Funktionsargument in den temporären Wert a, b kopiert;

// Sie können die Originaldaten nicht austauschen oder eine Operation an diesen Daten (a, b) ausführen

nicht auf Originaldaten reflektiert werden

}

int fun (int & a, int & b)

{

// Aufruf als Referenz

// hier übergebst du die Variable direkt mit unterschiedlichem Namen alle Änderungen

Bei Daten a wird b auf die Hauptvariable zurückgeführt

}

int fun (int * p1, int * p2)

{

// nach adresse anrufen

Hier übergeben Sie die Adresse des Standorts und nicht die Variable, auf die Sie zugreifen können

die Variable mit * p1

}


Antwort 3:

Bei Call-by-Value übergeben wir den Wert als Parameter an die Funktion, bei Call-by-Refrence übergeben wir die Adresse dieses Werts als Parameter an die Funktion.

Beispiel für einen Anruf nach Erfrischung: -

Leerer Tausch (int * a, int * b);

void main ()

{

int x, y;

cout << "Geben Sie die Nummern zum Tauschen ein \ n";

cin >> x >> y;

Swap (& x, & y);

getch ();

}

Leerer Swap (int * a, int * b)

{

int temp;

temp = * a;

* a = * b;

* b = temp;

cout << * a << * b;

}

Beispiel für einen Aufruf nach Wert: -

Leerer Tausch (int a, int b);

void main ()

{

int x, y;

cout << "Geben Sie die Nummern zum Tauschen ein \ n";

cin >> x >> y;

Swap (x, y);

getch ();

}

Leerer Swap (int * a, int * b)

{

int temp;

temp = a;

a = b;

b = temp;

cout << a << b;

}