Menu
Coddy logo textTech

Arrays und Funktionen

Teil des Abschnitts Grundlagen der C++-Journey von Coddy — Lektion 62 von 74.

Arrays können nicht direkt als vollständige Arrays an Funktionen übergeben werden. Wenn Sie versuchen, ein Array an eine Funktion zu übergeben, „zerfällt“ es in einen Zeiger auf sein erstes Element.

Zum Beispiel:

int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
	int size = std::size(arr);
}

std::size(arr) liefert dir nicht die tatsächliche Array-Größe. arr ist hier tatsächlich ein Pointer, kein Array. Pointer werden im nächsten Kurs behandelt.

Aus diesem Grund müssen wir bei der Übergabe von Arrays an Funktionen normalerweise die Größe als separaten Parameter übergeben:

void processArray(int arr[], int size) {
    // Jetzt können wir mit dem Array unter Verwendung des Größenparameters sicher arbeiten
}

So rufen Sie die Funktion auf:

int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);

Zudem ist es nicht möglich, ein Array in einer Funktion zurückzugeben:

int[] processArray(int arr[]) {
	return arr;
}

Das ist unzulässig. Stattdessen sollten Sie die *-Syntax verwenden:

int* processArray(int arr[]) {
	return arr;
}
int* newArr = processArray(arr);

Die Sternchen-Syntax (*) bezieht sich auf Pointer, die im nächsten Kurs besprochen werden.

Spickzettel

Arrays können nicht direkt an Funktionen übergeben werden – sie „zerfallen“ (decay) in Zeiger auf ihr erstes Element.

Wenn Sie Arrays an Funktionen übergeben, müssen Sie die Größe als separaten Parameter übergeben:

void processArray(int arr[], int size) {
    // Mit dem Array unter Verwendung des size-Parameters arbeiten
}

int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);

Arrays können nicht direkt von Funktionen zurückgegeben werden. Verwenden Sie stattdessen die Zeiger-Syntax:

int* processArray(int arr[]) {
    return arr;
}
int* newArr = processArray(arr);

Probier es selbst

Diese Lektion enthält keine Programmieraufgabe.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen