C ++ Anruf nach Adresse und Anruf per Referenz

C ++ Anruf nach Adresse und Anruf per Referenz
C ++ ist eine flexible Programmiersprache Allzwecke Programmiersprache. Es wurde ursprünglich von Bjarne Stroustrup, einem dänischen Informatiker, 1985 erstellt. C ++ unterstützt Drei-Parameter-Passingmethoden, ich.e., Rufen Sie nach Wert an, rufen Sie nach Adresse an und rufen Sie nach Referenz an. In diesem Artikel werden wir über Referenzmechanismus über Anruf von Adresse und Anruf besprechen.

Was ist eine Funktion?

Bevor wir in das eigentliche Thema springen, müssen wir verstehen, wie die Funktion in C ist++. Viele von Ihnen sind möglicherweise bereits mit Funktionen vertraut.

Eine Funktion ist im Grunde ein Code, mit dem eine bestimmte Aufgabe ausgeführt werden kann. Eine Funktion wird hauptsächlich verwendet, um den sich wiederholenden Code in einem C ++ - Programm zu reduzieren. Es nimmt Eingabe als Parameter und gibt die Ausgabe als Rückgabewert zurück. Wenn wir die Funktion einmal definieren, können wir sie im späteren Teil unseres Programms mehrmals aufrufen/verwenden. Auf diese Weise sparen wir viel wiederholter Code im Programm.

Jedes C ++ - Programm muss die Funktion „main ()“ haben. Die Funktion „main ()“ ist der Einstiegspunkt für ein C ++ - Programm. Abgesehen von der Funktion „main ()“ kann der Programmierer so viele Funktionen definieren, wie sie wollen.

Hier ist die Syntax der Definition einer Funktion:

Return_type function_name (Eingabeparameterliste)

Die Funktion in C ++ kann 0 oder mehr Eingabeparameter akzeptieren, während es nur einen Rückkehrwert zurückgeben kann.

Was ist Adresse?

Es gibt zwei Arten von Variablen in C ++ (ähnlich der C -Sprache) - Datenvariable und Adressvariable. Die Adressvariable wird verwendet, um die Adresse einer anderen Datenvariablen zu speichern. Betrachten wir beispielsweise den folgenden Code -Snippet:

int i = 100;
int *ptr = & i;

Hier zeigt uns die erste Anweisung, dass die Variable „I“ eine Datenvariable ist und den Wert 100 speichert. In der zweiten Erklärung deklarieren wir eine Zeigervariable, ich.e. "PTR" und initialisieren Sie es mit der Adresse der Variablen "I".

Was ist Referenz?

Die Referenz ist ein weiteres leistungsstarkes Merkmal der C ++ - Sprache. Betrachten wir den folgenden Code -Snippet:

int a = 200;
int & r = a;

In diesem Beispiel haben wir eine Ganzzahl erklärt, ich.e. "A" und dann eine Referenzvariable "R" deklariert, die mit dem Wert von "a" initialisiert wird. Die Referenzvariable ist also nichts anderes als ein Alias ​​einer anderen Variablen.

Parameterübergangsmethoden:

In der C ++ - Sprache gibt es drei Arten von Parameterübergabemethoden:

  1. Rufen Sie nach Wert / Pass nach Wert auf
  2. Rufen Sie nach Adresse / Pass an Adresse an
  3. Rufen Sie durch Referenz / Pass per Referenz an

In diesem Artikel diskutieren wir über die - Anruf nach Adresse und Anruf per Bezug.

Was ist Anruf von Adresse / Übergabe von Adresse?

Im Falle des Anrufs von Adress / Pass -By -Adressmethode werden die Funktionsargumente als Adresse übergeben. Die Anruferfunktion übergibt die Adresse der Parameter. Zeigervariablen werden in der Funktionsdefinition verwendet. Mit Hilfe des Aufrufs nach Adressmethode kann die Funktion auf die tatsächlichen Parameter zugreifen und diese ändern. Wir werden ein Beispiel für den späteren Abschnitt "Anruf nach Adressmethode" dieses Artikels sehen.

Was ist Anruf durch Referenz / Pass für Referenz?

In der Aufruf durch Referenz / Übergabe durch Referenzmethode werden die Funktionsparameter als Referenz übergeben. In der Funktionsdefinition werden auf die tatsächlichen Parameter mit der Referenzvariablen zugegriffen.

Beispiele:

Da wir nun das Konzept der Parameterübergabemethoden verstehen, werden wir mehrere Beispielprogramme sehen, um den Parameterüberschreitungsmechanismus in C ++ zu verstehen:

  1. Beispiel 1 - Anruf nach Adresse (1)
  2. Beispiel -2 - Anruf nach Adresse (2)
  3. Beispiel -3 - Aufrufen durch Bezugnahme (1)
  4. Beispiel -4 - Aufrufen durch Bezugnahme (2)

Die ersten beiden Beispiele werden angegeben, um zu erklären, wie der Anruf nach Adressmethode in C funktioniert++. Die letzten beiden Beispiele sind, den Anruf durch Referenzkonzept zu erklären.

Beispiel 1 - Anruf nach Adresse (1)

In diesem Beispiel werden wir den Anruf nach Adressmechanismus demonstrieren. Aus der Funktion „main ()“ nennen wir die Funktion „Hallo ()“ und übergeben die Adresse von „var“. In der Funktionsdefinition empfangen wir die Adresse von „var“ in einer Zeigervariablen, i.e., "P". In der Funktion Hallo, der Wert von „var“ wird mit Hilfe des Zeigers in 200 geändert. Daher wird der Wert von „var“ nach dem Funktion "hello ()" in die Funktion „main ()“ in 200 in der Funktion „hello ()“ geändert.

#enthalten
Verwenden von Namespace STD;
void Hallo (int *p)

Cout << endl << "Inside hello() function : " << endl;
Cout << "Value of *p = " << *p << endl;
*p = 200;
Cout << "Value of *p = " << *p << endl;
Cout << "Exiting hello() function." << endl;

int main ()

int var = 100;
Cout << "Value of var inside main() function = " << var << endl;
Hallo (& var);
Cout << endl << "Value of var inside main() function = " << var << endl;
Rückkehr 0;

Beispiel -2 - Anruf nach Adresse (2)

Dies ist ein weiteres Beispiel für den Anruf nach Adressmethode. In diesem Beispiel werden wir erklären, wie der Anruf nach Adressmethode verwendet werden kann, um ein reales Problem zu lösen. Zum Beispiel möchten wir eine Funktion schreiben, um zwei Variablen auszutauschen. Wenn wir den Aufruf nach Wertmechanismus verwenden, um zwei Variablen auszutauschen, werden die tatsächlichen Variablen nicht in die Anruferfunktion ausgetauscht. Der Anruf nach Adressmethode kann in einem solchen Szenario verwendet werden. In diesem Beispiel übergeben wir die Adresse sowohl von var_1 (& var_1) als auch von var_2 (& var_2) an die Funktion „mySwap ()“ an die Funktion „mySwap ()“. In der Funktion „mySwap ()“ tauschen wir die Werte dieser beiden Variablen mit Hilfe der Zeiger aus. Wie Sie in der folgenden Ausgabe sehen können, wird der tatsächliche Wert dieser Variablen in der Funktion „main ()“ ausgetauscht, nachdem die Funktion „mySwap ()“ ausgeführt wurde.

#enthalten
Verwenden von Namespace STD;
void mySwap (int *vptr_1, int *vptr_2)

int temp_var;
temp_var = *vptr_1;
*vptr_1 = *vptr_2;
*vptr_2 = temp_var;

int main ()

int var_1 = 100;
int var_2 = 300;
Cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
Cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl;
Cout << "Calling mySwap() function - Call by address." << endl;
mySwap (& var_1, & var_2);
Cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
Cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
Rückkehr 0;

Beispiel -3 - Aufrufen durch Bezugnahme (1)

In diesem Beispiel werden wir demonstrieren, wie der Aufruf durch Referenz in C funktioniert++. In der Funktion „hello ()“ wird der Wert als Referenzvariable (& p) empfangen. Mit Hilfe der Referenzvariablen (i.e., p), wir können den Wert des tatsächlichen Parameters (var) in der Funktion „main ()“ ändern.

#enthalten
Verwenden von Namespace STD;
void Hallo (int & p)

Cout << endl << "Inside hello() function : " << endl;
Cout << "Value of p = " << p << endl;
p = 200;
Cout << "Value of p = " << p << endl;
Cout << "Exiting hello() function." << endl;

int main ()

int var = 100;
Cout << "Value of var inside main() function = " << var << endl;
Hallo (var);
Cout << endl << "Value of var inside main() function = " << var << endl;
Rückkehr 0;

Beispiel -4 - Aufrufen durch Bezugnahme (2)

Dies ist ein weiteres Beispiel für einen Aufruf durch Referenz. In diesem Beispiel werden wir zeigen. Die Funktion „mySwap ()“ wird aus der Funktion „main ()“ mit den folgenden Parametern aufgerufen - var_1 und var_2. In der Funktion „mySwap ()“ empfangen wir die Parameter als Referenzvariablen.

#enthalten
Verwenden von Namespace STD;
void myswap (int & vref_1, int & vref_2)

int temp_var;
temp_var = vref_1;
VREF_1 = VREF_2;
vref_2 = temp_var;

int main ()

int var_1 = 100;
int var_2 = 300;
Cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
Cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl;
Cout << "Calling mySwap() function - Call by reference." << endl;
mySwap (var_1, var_2);
Cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
Cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
Rückkehr 0;

Abschluss

Das Verständnis der Parameterüberschreitungsmethoden in C ++ ist sehr entscheidend. Die C -Programmiersprache C unterstützt den Anruf nach Wert und Ruf nur nach Adresse. C ++ unterstützt jedoch Call durch Referenz zusammen mit den beiden vorherigen Mechanismen. In diesem Artikel haben wir mehrere Arbeitsbeispiele gesehen, um das Konzept von Call nach Adresse und Anruf durch Referenz zu verstehen. Call by Adresse ist eine sehr leistungsstarke und beliebte Methode in eingebetteten Domänenanwendungen.