Zweidimensoinales Array an eine Funktion übergeben
-
Hallo,
ich möchte ein zweidimensionales Array an eine meiner Funktionen angegen.
Leider klappt das irgendwie nicht so gut.Ich habe es mit (int **) blabla versucht, vergeblich.
Daher wollte ich fragen, wie ich denn so etwas am besten anstelle.Da ich schonmal einen Thread offen habe, würde es mich auch noch interessieren, wie ich Klassenarrays erstelle. Der Compiler beschwert sich immer darüber, dass der Operator nicht überladen ist, zurecht.
AlsoCMeineKlasse cmkHallo [10];
funktioniert nicht.
Danke schonmal für hoffentlich kommende Hilfe.
-
Also wenn es um Klassen geht bist du hier falsch --> C++ Sektion.
Eine Referenz auf ein zweidimensionales Array an eine Funktion zu übergeben sollte aber mit 'int **zeiger' klappen. Poste mal deinen Code, mit dem das nicht funktioniert.
Ein Klassenarray kannst du IMHO gar nicht so erstellen, wie du das denkst. Du kannst ein Array von Zeigern auf deine Klasse bauen.
-
ad 1)
das sollte schon funktionieren wie du das gemacht hast!!void foo(char **bar) { //... *(*(bar + i) + n); //z.B.: n-ter charakter des i-ten string // oder schöner: bar[i][n]; //... }
ad 2)
also überladen kann man funktionen in C nicht, und klassen sind sowieso ein fremdwort! da musst du ins C++ forumhth
Sebastian
-
add to sebhofer:
übergeben mit:char bar[2][3]; foo(bar); // SPEICHER MUSS AUF ALLE FÄLLE ALLOCIERT SEIN! //sonst kannst du ja nicht mit der variable arbeiten
mfG (c)h
-
danke für den zusatz chille!!
das habe ich ganz vergessen!Sebastian
-
chille07 schrieb:
add to sebhofer:
übergeben mit:char bar[2][3]; foo(bar); // SPEICHER MUSS AUF ALLE FÄLLE ALLOCIERT SEIN! //sonst kannst du ja nicht mit der variable arbeiten
mfG (c)h
bei char[2][3] musste nix allokieren, das wird automatisch angelegt...
-
ich schrieb auch:
"muss allociert sein"dh. es wird entweder automatisch allociert
oder du musst es selbst allocieren(logisch*g*)
ABER es MUSS Speicher allociert sein(dann ist nur noch die frage oba heap oder stack)mfG (c)h
-
chille07 schrieb:
ABER es MUSS Speicher allociert sein(dann ist nur noch die frage oba heap oder stack)
Oder im Nirvana
*scnr*
-
*gg*
auch eine beliebte möglichkeit!
ist aber leider selten erfolgbringend;)mfG (c)h
-
chille07 schrieb:
ABER es MUSS Speicher allociert sein(dann ist nur noch die frage oba heap oder stack)
Nein muss er nicht! Es kommt ganz darauf an was du in der Funktion damit machst. Schließlich könntest du ja auch in der Funktion den Speicher erst allokieren.
Übrigens sollte der Parameter noch ein const davorgestellt bekommen; nicht dass man in der Funktion noch auf dumme Ideen kommt ;).
@plusman
Das mit den Klassen fragst du am besten im C++-Forum nach (wenn noch nicht geschehen).
-
AJ schrieb:
Übrigens sollte der Parameter noch ein const davorgestellt bekommen; nicht dass man in der Funktion noch auf dumme Ideen kommt ;).
hmm...
wenn jemand den pointer in der funktion inkrementieren will, soll er doch. gibts dabei gefahren?Sebastian
-
-
chille07 schrieb:
@AJ:
stimmt!aber man weiss ja nie, ob er auch daran denkt?!
mfG (c)h
Deswegen ist deine Formulierung auch falsch. Er muss es nicht tun (also zwingend), sondern er sollte es tun.