So geben Sie ein Array von einer Funktion in C++ zurück
- Verwenden Sie Zeigermanipulation, um ein Array im C-Stil aus der Funktion in C++ zurückzugeben
-
Verwenden Sie einen
Vector
-Container, um ein Array von der Funktion in C++ zurückzugeben
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;
}
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 FacebookVerwandter Artikel - C++ Function
- C++ Neudefinition von formalen Parametern
- Das Schlüsselwort const in der Funktionsdeklaration von Klassen in C++
- Die ShellExecute()-Funktion in C++
- Kotangensfunktion in C++
- Neudefinition des Standardparameters in C++
- Time(NULL)-Funktion in C++