Zeiger auf Array in C++ zurückgeben

Jinku Hu 12 Oktober 2023
  1. Verwendung der int var[n] Notation zur Übergabe des Array-Arguments an die Funktion und anschließende Rückgabe in C++
  2. Verwenden der int* var-Notation zur Übergabe des Array-Arguments an die Funktion und anschließende Rückgabe in C++
Zeiger auf Array in C++ zurückgeben

In diesem Artikel werden mehrere Methoden zur Rückgabe eines Zeigers auf ein Array in einer Funktion in C++ erläutert.

Verwendung der int var[n] Notation zur Übergabe des Array-Arguments an die Funktion und anschließende Rückgabe in C++

Da die Funktion den Zeigerwert zurückgeben muss, gehen wir davon aus, dass das Array eine feste Länge hat. Wenn wir alternativ ein dynamisches Array - std::vector - an eine Funktion übergeben müssen, ist es besser, Referenzen zu verwenden.

Das nächste Beispiel demonstriert die Funktion subtructArray, die jeden Wert im Array subtrahiert, wenn der Subtrahend-Wert gegeben ist. Das Array wird als rohes Array im C-Stil deklariert, was vor allem für die Arbeit mit Zeigern nützlich ist. Das Array wird mit der int arr[] Notation des Parameters übergeben, aber es wird vom Compiler als Zeiger auf das Array darunter konvertiert und wir können es im Funktionskörper als solches behandeln. Schließlich wird der Zeigerwert direkt mit dem Variablennamen zurückgegeben, ohne seine Adresse mit dem &-Operator zu übernehmen.

Die subtrahierten Array-Elemente werden auf der Konsole ausgegeben, und nach der Ausgabe des letzten Elements gibt es die Anweisung cout, die \b\b in das String-Literal einschließt. Diese Escape-Sequenz bedeutet, dass das Verhalten der Rückschritttaste emuliert wird, wodurch die letzten beiden Zeichen in der Konsolenausgabe gelöscht werden.

#include <array>
#include <iostream>

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

int *subtructArray(int arr[], int size, int subtrahend) {
  for (int i = 0; i < size; ++i) {
    arr[i] -= subtrahend;
  }
  return arr;
}

constexpr int SIZE = 10;

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

  int *ptr = subtructArray(c_array, SIZE, num);

  cout << "array1 = [ ";
  for (int i = 0; i < SIZE; ++i) {
    cout << ptr[i] << ", ";
  }
  cout << "\b\b ]" << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

array1 = [ -14, -13, -12, -11, -10, -9, -8, -7, -6, -5 ]

Verwenden der int* var-Notation zur Übergabe des Array-Arguments an die Funktion und anschließende Rückgabe in C++

Eine andere Methode zur Übergabe des Arrays mit fester Größe besteht darin, einen Funktionsparameter mit der int* var-Notation zu deklarieren und den Zeigerwert zurückzugeben, nachdem der Funktionskörper mit der Verarbeitung fertig ist. Beachten Sie, dass der folgende Beispielcode den std::array-Container verwendet und die Methode data() aufruft, um den Zeiger abzurufen, in dem die Array-Elemente gespeichert sind. Die return-Anweisung nimmt den Variablennamen wie in der vorherigen Methode.

#include <array>
#include <iostream>

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

int *subtructArray(int *arr, int size, int subtrahend) {
  for (int i = 0; i < size; ++i) {
    arr[i] -= subtrahend;
  }
  return arr;
}

constexpr int SIZE = 10;

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

  int *ptr2 = subtructArray(arr1.data(), arr1.size(), num);

  cout << "array2 = [ ";
  for (int i = 0; i < SIZE; ++i) {
    cout << ptr2[i] << ", ";
  }
  cout << "\b\b ]" << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

array1 = [ -14, -13, -12, -11, -10, -9, -8, -7, -6, -5 ]
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++ Array