Funktion innerhalb einer Funktion in C++ aufrufen

Jinku Hu 12 Oktober 2023
  1. Funktionsaufrufmechanik Schritt für Schritt in C++
  2. Verwenden Sie die Anweisung return, um eine Funktion innerhalb einer Funktion in C++ aufzurufen
  3. Verwenden Sie std::pair, um zwei Werte aus der Funktion in C++ zurückzugeben
Funktion innerhalb einer Funktion in C++ aufrufen

In diesem Artikel werden verschiedene Methoden zum Aufrufen einer Funktion innerhalb einer Funktion in C++ erläutert.

Funktionsaufrufmechanik Schritt für Schritt in C++

Der Aufruf einer Funktion beinhaltet die Berechnung der Werte für ihre Argumente, die in den lokalen Bereich gestellt werden. Da in einem Funktionskörper normalerweise lokale Variablen enthalten sind, muss ein neuer Speicherplatz vorhanden sein, der als Stapelrahmen bezeichnet wird. Funktionsargumente werden mit entsprechenden Namen kopiert oder referenziert und konvertiert, wenn die Umwandlungsoperation beteiligt ist. Sobald die vorherigen Schritte ausgeführt wurden, werden die Anweisungen im Funktionsblock ausgeführt, bis die return auftritt. Die Anweisung return erzwingt, dass der Kontrollfluss an die aufrufende Funktion zurückgegeben wird. Zu diesem Zeitpunkt wird der automatisch zugewiesene Stapelrahmen verworfen und die Steuerung wird über den Aufrufercode fortgesetzt.

Die Funktionen haben einen Rückgabetyp, der den Objekttyp definiert, der an den Aufrufercode übergeben werden soll. Wir können eine Funktion haben, die keinen Wert zurückgibt und mit dem Typ void bezeichnet wird. Wenn die Funktion einen gültigen Rückgabetyp hat, können wir die mehreren Funktionsaufrufe verketten, wie im folgenden Beispielcode gezeigt. Beachten Sie, dass das innere addTwoInts zuerst ausgeführt wird und der zurückgegebene Wert als eines seiner Argumente an das äußere addTwoInts übergeben wird.

#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int addTwoInts(int i, int j) { return i + j; }

int main() {
  cout << "2 + 1 + -3  = " << addTwoInts(addTwoInts(2, 1), -3) << endl;
  cout << "(10 + 10) + (11 + -11) = "
       << addTwoInts(addTwoInts(10, 10), addTwoInts(11, -11)) << endl;
  cout << "(12 + -9) + 10) + -11) = "
       << addTwoInts(addTwoInts(addTwoInts(12, -9), 10), -11) << endl;

  return EXIT_SUCCESS;
}

Verwenden Sie die Anweisung return, um eine Funktion innerhalb einer Funktion in C++ aufzurufen

Eine weitere nützliche Methode zum Aufrufen einer Funktion innerhalb einer Funktion ist die Verwendung der Anweisung return. Beachten Sie jedoch, dass die aufgerufene Funktion einen Rückgabewert haben sollte, der zu dieser Notation passt oder nicht kompiliert werden kann. Darüber hinaus sollte die aufrufende Funktion denselben Rückgabetyp haben, wenn der einzige Ausdruck nach der Anweisung return die Anruffunktion ist, wie im folgenden Beispielcode gezeigt.

#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int addTwoInts(int i, int j) { return i + j; }

int multiplyAccumulate(int i, int j) { return addTwoInts(i, i * j); }

int main() {
  cout << "multiplyAccumulate(1,2) = " << multiplyAccumulate(2, 2) << endl;

  return EXIT_SUCCESS;
}

Verwenden Sie std::pair, um zwei Werte aus der Funktion in C++ zurückzugeben

Es gibt Szenarien, in denen die Funktion geeignet ist, mehrere Werte an den Aufrufer zurückzugeben. In solchen Fällen kann man die Struktur std::pair verwenden, um jedes Element im entsprechenden Datenelement zu speichern und den Wert zu übergeben. Mit dem Zeiger auf das Array oder einen beliebigen STL-Container, der ausreichende Funktionen für das jeweilige Problem bietet, können weitere Elemente übergeben werden.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

std::pair<int, int> findMaxMin(vector<int> &arr) {
  std::pair<int, int> ret;

  auto max = std::max_element(arr.begin(), arr.end());
  auto min = std::min_element(arr.begin(), arr.end());

  ret.first = arr.at(std::distance(arr.begin(), max));
  ret.second = arr.at(std::distance(arr.begin(), min));
  return ret;
}

int main() {
  vector<int> array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  auto ret = findMaxMin(array);
  cout << "Maximum element is " << ret.first << ", Minimum is " << ret.second
       << endl;

  return EXIT_SUCCESS;
}
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