Mehrdimensionales char-Array aus Funktionn zurückgeben

Marco7757

Mitglied
Hallo Freunde

Ich versuche gerade mein mehrdimensionales char-Array (zeichen[100][1000]) aus einer Funktion, in der zeichen bearbeitet wird, zurückzugeben. Allerdings habe ich Probleme mit dem korrekten Datentyp!

Code:
char meineFunktion(char zeichen[100][1000]) {
//Code ...
//Code ...
return zeichen;
}

Das funktioniert leider nicht. Die Fehlermeldung lautet:
"Error: return value type does not match the function type"

Wie lautet denn der Typ eines mehrdimensionalen char-Arrays? Nicht einfach char?
 
Wenn du die Werte vom Array bearbeitest, das übergeben wird, brauchst du nichts zurückgeben.
Die Änderungen bleiben auch so.
 
Echt? Wenn ich den Array erst in der main-Methode deklariere, wird dieser dann auch geändert wenn man ihn übergibt und in einer Methode ausserhalb der main-Methode ändert?

Muss ich gleich mal ausprobieren!

Edit:
Vielen Dank, es funktioniert tatsächlich!
 
Zuletzt bearbeitet:
Genau.
Allerdings nur bei Arrays, nicht bei Einzelvariablen.

Generell wird ja immer der Wert einer Variable übergeben; würde sich dann in der main-Funktion nicht automatisch mitändern.
Bei Arrays ist der "Wert" aber nur die Adresse (quasi der Ort), wo die ganzen Elemente zu finden sind.
Man bekommt also eine Kopie der Adresse übergeben, die verweist aber noch immer zu den gleichen Elementen des Arrays.

Übrigens: Wenn du auch Einzelvariablen "haltbar" ändern möchtest, könntest du statt return auch sowas schreiben:
void funktion(int &abc);
Das & ist hier ausschlaggebend: Ohne & bekommst du wie gewohnt eine Kopie, mit & werden die Änderungen auch ins main etc übernommen.

Vorallem wenn es um mehr als eine Variable geht, ist das praktisch. Mit return kann man ja nur immer eine Variable zurückgeben, & kannst du bei beliebig vielen Parametern einsetzen.
 
Zurück