chaertl Geschrieben 21. November 2002 Geschrieben 21. November 2002 Hallo Zusammen, bin gerade am programmieren und versuche zwei Vektoren (1 eindimensionaler, ein zweidimensionaler) aus der Hauptfunktion in eine Unterfunktion zu übergeben. Aber so wie ich meine das es richtig ist haut es nicht hin, denn ich bekomm immer wieder Fehlermeldungen vom Compiler. Das ganze sieht dann folgendermaßen aus: int suche(char cmp_matrix[], char suchwort[5][20]) { usw. . . . in main dann: suche(cmp_matrix, suchwort); kann mir jemand sagen wo der Fehler ist? Gruß Turtleman Zitieren
Guybrush Threepwood Geschrieben 21. November 2002 Geschrieben 21. November 2002 Die definition deiner Funktion muß so aussehen: suche(char* eindimensional,char** zweidimensional); Zitieren
maxim_42 Geschrieben 21. November 2002 Geschrieben 21. November 2002 Quote: Die definition deiner Funktion muß so aussehen: suche(char* eindimensional,char** zweidimensional); Ich glaub da liegst du falsch. suche(char* eindimensional,char* zweidimensional) müsste stimmen. Denn ein char[][] - Feld ist kein Array von Strings, sondern eins von chars. Genauso wie das eindimensionale Array. Die Zweidimensionalität bestimmt lediglich die Reienfolge in der die Chars im Speicher liegen. Zitieren
Guybrush Threepwood Geschrieben 21. November 2002 Geschrieben 21. November 2002 Ich glaub da liegst du falsch. Das glaube ich nicht;) Ein eindimensionales char Array ist im Prinzip ein String, ein zweidim. char Array ist demnach ein Array von Strings. Schau die hier mal an wie ein mehrdimensionales Array dynamisch angelegt wird, das dürfte das Problem lösen. Gruß Guybrush Zitieren
maxim_42 Geschrieben 28. November 2002 Geschrieben 28. November 2002 Ein char** ist ein Zeiger, der auf einen Zeiger zeigt. Man kann also ein Char** als eine Schreibweise für ein Feld betrachten, dessen einzelne Elemente Zeiger sind. Im Gegensatz dazu enthält ein Char[][] keine Zeiger! - Sondern nur einzelne Char. Es wird also auch nichts anderes übrigbleiben, als ein char* in der Funktion zu übergeben. Zitieren
Klotzkopp Geschrieben 28. November 2002 Geschrieben 28. November 2002 @Guybrush Threepwood & maxim_42: Probiert es doch einfach aus. Es geht übrigens beides nicht. Zitieren
Guybrush Threepwood Geschrieben 29. November 2002 Geschrieben 29. November 2002 Probiert es doch einfach aus. Es geht übrigens beides nicht. Habs probiert, geht wirklich nicht:confused: Inerhalb der Funktion klappt es so schon, aber wenn ich das zweidimensionale Feld übergeben will dann mekert er. Sehr merkwürdig. Zitieren
nic_power Geschrieben 29. November 2002 Geschrieben 29. November 2002 Ist eigentlich auch klar, da "char suchwort[5][20]" kein Pointer ist sondern ein Feld fester Groesse (und sowas kann man in C nun mal nicht an Funktionen uebergeben). Du kannst Dir aber einen Pointer auf "char suchwort[5][20]" bauen und diesen uebergeben . Wobei ich mir aber nicht sicher bin, dass Du wirklich einen 5*20 Char Array uebergeben moechtest, sondern vielmehr einen Array der 5 Pointer auf Strings der Laenge 20 enthaelt. Nic Zitieren
Guybrush Threepwood Geschrieben 29. November 2002 Geschrieben 29. November 2002 Oder man legt das Mehrdimensionale Array einfach global an. Zitieren
maxim_42 Geschrieben 29. November 2002 Geschrieben 29. November 2002 mit gegebenem char feld[2][2] und einer Funktion void funk(char* p), kann man beispielsweise funk(feld[0]) realisieren. Das übergibt einen Zeiger auf das erste Element. funk(feld[1]) würde dann einen Zeiger auf den dritten Char übergeben. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.