Mehrdimensionales Array und Funktionen
-
Hallo.
Ich habe folgendes:int main() { char sMatrix[4][4]; char sCodewort[20]; cout << "Bitte geben Sie das Codewort ein: " << endl; cin.get(sCodewort, 19); return 0; }Ich möchte nun eine Funktion schreiben welche als Parameter, Zeiger auf sCodewort und sMatrix erwartet.
In dieser Funktion soll das eingegebene Wort spaltenweise in die Matrix geschrieben werden.Eine zweite Funktion soll die Matrix lesen und das Wort wieder zusammensetzen.
Mein Problem ist nun folgendes:
Wie hat der Funktionsprototyp für meine erste Funktion auszusehen?void Funktion1(char*, ????);?
Und wie muss ich den Funktionskopf dann gestalten?
void Funktion1(char* Codewort, ????){...}Das ganze ist eine Berufsschulaufgabe. Wir haben noch keine Speicherverwaltung gemacht und auch noch keine Klassen. Von daher muss ich das ohne Klassen realisieren.
Wenn ich richtig liege, kann man mittels einer Funktion kein Array zurückgeben(?), so daß ich das Ganze per Zeiger realisieren muss.
Unser Lehrer hat uns leider nicht wirklich erklärt wie man einen Zeiger auf ein mehrdimensionales Array formuliert.Ich bin für jede Hilfe dankbar.
Gruß framee.
-
Du gibst dort den Typ an, den deine Daten letztendlich haben werden:
void Function1(char* Codewort,char Matrix[4][4]) {...} ... Function1(sCodewort,sMatrix);PS: Bist du dir sicher mit den Größenangaben? Die deklarierte Matrix ist ein Stück zu klein, um 20 Zeichen darin unterzubringen.
-
Erstmal vielen Dank für die schnelle Hilfe.
Bzgl der Grösse hast du natürlich Recht. Darauf habe ich tatsächlich nicht geachtet.
Ist
..., char Matrix[4][4])also ein Zeiger auf ein mehrdimensionales Array? Sprich dieser muss dann im Prototyp nicht als Zeiger gekennzeichnet werden?
void Funktion1(char*, char[][]);?
-
framee schrieb:
Ist
..., char Matrix[4][4])also ein Zeiger auf ein mehrdimensionales Array?
Ja, ist es.
Sprich dieser muss dann im Prototyp nicht als Zeiger gekennzeichnet werden?
void Funktion1(char*, char[][]);?
Nicht ganz: Alle Dimensionen außer der äußersten müssen zur Compile-Zeit bekannt sein (ein mehrdimensionales Array ist auch nur ein normales Array, dessen Elemente jedoch selber Arrays sind), damit wäre das korrekt:
void Funktion1(char*, char[][4]);
-
Ok, das habe ich verstanden.
Vielen Dank für Deine Hilfe.