Aufruf per Referenz vs. Aufruf per Wert in C++

Jinku Hu 12 Oktober 2023
  1. Verwendung von das Symbol & zum die Funktion in C++ als Referenz aufzurufen
  2. Einfache Funktionsdefinition für den Funktionsaufruf nach Wert in C++ verwenden
Aufruf per Referenz vs. Aufruf per Wert in C++

In diesem Artikel werden verschiedene Methoden zum Aufrufen nach Referenz und zum Aufrufen nach Wert in C++ erläutert.

Verwendung von das Symbol & zum die Funktion in C++ als Referenz aufzurufen

Funktionsargumente sind der Kern der Funktionsdefinition, da sie die Werte sind, die die Parameter der Funktion initialisieren. Wenn der Parameter eine Referenz ist, ist er an das Argument gebunden und der Wert des Arguments wird nicht kopiert. Das entsprechende Verhalten wird als Übergeben durch die Referenz oder als Aufrufen der Funktion als Referenz bezeichnet. Beachten Sie, dass diese Methode häufiger verwendet wird, wenn relativ größere Objekte zwischen den Funktionen übergeben werden müssen, da dadurch zusätzliche Ressourcen eingespart werden, die durch den Kopiervorgang aufgehalten werden.

Die Operationen, die für das Objekt innerhalb der Funktion ausgeführt werden, ändern den ursprünglichen Speicherort der Variablen. Dies ähnelt der Übergabe des Zeigers an das Objekt. Im folgenden Beispiel demonstrieren wir die Funktion func, die einen einzelnen Parameter vom Typ int verwendet und den Wert 123 zuweist. Das Symbol i ist lediglich der Aliasname für das ursprüngliche Objekt j aus dem Programm main. Beachten Sie jedoch, dass das Symbol & in C++ ziemlich überladen ist und nicht mit der Funktionalität der Adresse des Operators verwechselt werden sollte.

#include <iostream>

using std::cout;
using std::endl;

void func(int &i) { i = 123; }

int main() {
  int j = 0;
  func(j);
  cout << "j = " << j << endl;

  exit(EXIT_SUCCESS);
}

Ausgabe:

j = 123

Einfache Funktionsdefinition für den Funktionsaufruf nach Wert in C++ verwenden

Das Aufrufen der Funktion nach Wert wird häufig für das Verhalten angegeben, wenn die angegebene Funktion den Parameter kopiert und als separates Objekt im jeweiligen Bereich speichert. Die entsprechende Notation erfordert keine eindeutigen Symbole, die Argumente werden jedoch als einfache Variablen angegeben. Folglich hat der Funktionsblockbereich ein separates Objekt, und Änderungen daran wirken sich nicht auf die ursprüngliche Variable aus der Funktion main aus. Am häufigsten wird die Methode Aufruf nach Wert verwendet, wenn die übergebenen Argumente integrierte Typen oder kleine Objekte sind, die leicht zwischen Funktionen kopiert werden können.

#include <iostream>

using std::cout;
using std::endl;

void func2(int i) { i = 123; }

void func(int &i) { i = 123; }

void func(int *ip) {
  *ip = 123;
  ip = nullptr;
}

int main() {
  int j = 0;
  func(j);
  cout << "j = " << j << endl;

  j = 0;
  func2(j);
  cout << "j = " << j << endl;

  j = 0;
  func(&j);
  cout << "j = " << j << endl;

  exit(EXIT_SUCCESS);
}

Ausgabe:

j = 123
j = 0
j = 123
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ Function