000
19.11.2006, 13:36 Uhr
WindDancer1
|
Hi Leute ,
ich hab hier mal ne etwas allgemeinere Frage zu nem Array aus Zeichenkettenketten. Ich habe eine Fünktion geschrieben die mir schlicht und einfach nur ein Array aus Zeichenketten zurückgibt **arrayBack(). Der PointerPointer char **myArr dient zur Aufnahme des Rückgabewertes. Über den Arrayzugriffsoperator kann ich auf jede beliebige Zeichenkette des Arrays zugreifen, aber nur auf eine, möchte ich auf eine zweite oder dritte Zeichenkette zugreifen muss ich immer wieder die Fuktion bzw. ihren Rüchgabewert erneut zuqweisen. Das kann doch nicht sein, über eine Schleife muss es doch dann möglichsein alle Zeichenketten nacheinander auszulesen, sonst müsste ich bei einem Array mit z.b.: 100 Zeichenketten 100 mal zuweisen. Aber was mach ich falsch und wie geht’s richtig?
Hier der Source:
C++: |
# include <iostream>
using namespace std;
char **arrayBack(); // Prototype für ein char - Array als Return Wert
void main() {
char **myArr = NULL;; // Deklaration eines Pointers auf ein Array aus Zeichenketten myArr = arrayBack(); // Dem Pointer wird der Returnwert der Funktion arrayBack (ein Array aus Zeichenketten) zugewiesen
cout << myArr[2] << endl; // Ausgabe des Pointers an Stelle 2 cout << arrayBack()[3] << endl; // funktioniert aber warum funktioniert das und die Zeile darunter nicht
cout << myArr[4] << endl; // Ausgabe des Pointers an Stelle 4 funktioniert nicht
myArr = arrayBack(); // Jetzt nach erneuter Zuweisung geht's wieder cout << myArr[4] << endl;
}
char **arrayBack() { char *myArr[]= {"Alpha","Beta","Gamma","Delta","Epsilon"}; // Deklaration und initialisierung des Arrays aus Zeichenketten
return myArr; // Rückgabe des Arrays }
|
Vielen Dank schon mal vorab für eure Hilfe
WindDancer |