So geben Sie ein Array von einer Funktion in C++ zurück

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie Zeigermanipulation, um ein Array im C-Stil aus der Funktion in C++ zurückzugeben
  2. Verwenden Sie einen Vector-Container, um ein Array von der Funktion in C++ zurückzugeben
So geben Sie ein Array von einer Funktion in C++ zurück

Dieser Artikel führt ein, wie man ein Array von der Funktion in C++ zurückgibt.

Verwenden Sie Zeigermanipulation, um ein Array im C-Stil aus der Funktion in C++ zurückzugeben

Wenn in C/C++ die Array[]-Notation als Funktionsparameter übergeben wird, ist sie nur ein Zeiger auf das erste Element des übergebenen Arrays. Daher ist der Funktionsprototyp, den wir konstruieren müssen, derjenige, der den Zeiger auf den im Array gespeicherten Typ zurückgibt; in unserem Fall ist es int. Sobald die Funktion zurückkehrt, können wir auf ihre Elemente mit der Arraynotation [] zugreifen oder den Zeiger selbst dereferenzieren (vielleicht etwas Zeigerarithmetik wie zuvor).

#include <iostream>

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

int *MultiplyArrayByTwo(int arr[], int size) {
  for (int i = 0; i < size; ++i) {
    arr[i] *= 2;
  }
  return arr;
}

int main() {
  constexpr int size = 10;
  int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  int *ptr = MultiplyArrayByTwo(c_array, size);

  cout << "array = [ ";
  for (int i = 0; i < size; ++i) {
    cout << ptr[i] << ", ";
  }
  cout << "]" << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

array = [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, ]

Beachten Sie, dass die Funktion MultiplyArrayByTwo als void implementiert werden könnte und wir auf modifizierte Elemente aus der c_array-Variablen zugreifen könnten, da sie auf die gleiche Adresse zeigen, wie im folgenden Beispiel gezeigt wird:

#include <iostream>

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

void MultiplyArrayByTwo(int arr[], int size) {
  for (int i = 0; i < size; ++i) {
    arr[i] *= 2;
  }
}

int main() {
  constexpr int size = 10;
  int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  MultiplyArrayByTwo(c_array, size);

  cout << "array = [ ";
  for (int i = 0; i < size; ++i) {
    cout << c_array[i] << ", ";
  }
  cout << "]" << endl;

  return EXIT_SUCCESS;
}

Verwenden Sie einen Vector-Container, um ein Array von der Funktion in C++ zurückzugeben

In dieser Version speichern wir unser Array in einem Vector-Container, der seine Elemente dynamisch skalieren kann, so dass es nicht notwendig ist, den Parameter size zu übergeben.

Beachten Sie, dass wir ein anderes Objekt von der Funktion zurückgeben, so dass wir cpp_array nicht benutzen können, um darauf zuzugreifen. Wir müssen eine neue Variable erstellen und ihr den Rückgabewert der Funktion zuweisen. Dann können wir durch sie iterieren und das Ergebnis ausgeben.

#include <iostream>
#include <vector>

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

vector<int> MultiplyArrayByTwo(const vector<int> *arr) {
  vector<int> tmp{};

  for (const auto &item : *arr) {
    tmp.push_back(item * 2);
  }
  return tmp;
}

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

  auto cpp_array_2x = MultiplyArrayByTwo(&cpp_array);

  cout << "array = [ ";
  for (int i : cpp_array_2x) {
    cout << i << ", ";
  }
  cout << "]" << 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

Verwandter Artikel - C++ Array