Forum: Compiler & IDEs mehrdimensionales Array an Funktion übergeben


von Ingo Uhlemann (Gast)


Lesenswert?

Hallo,

ich bräuchte nochmals eure Hilfe, ich habe jetzt für ein Menü eine 
Funktion angelegt. Vom Prinzip her Funktioniert die Funktion, aber ich 
hatte das Array mit dem Menüinhalt mit in der Funktion drin was zu 
Problemen führte.

Jetzt habe ich das Array mit ins Hauptprogramm übernommen was mir sogar 
vom Vorteil ist. Doch wie kann ich das Array jetzt an die Funktion 
übergeben.

Erstmal mein Array:
1
char* stry[4][6];
2
stry[1][1] = "Qme4.04";
3
stry[1][2] = "XL-OS";
4
stry[1][3] = "SPEEDER-OS";
5
stry[1][4] = "OLD-OS BIBOMON";
6
stry[1][5] = "OmniMon";
7
stry[1][6] = "OmniView";
8
9
stry[2][1] = "AUS";
10
stry[2][2] = "256KB RAMBO";
11
stry[2][3] = "256KB COMPYSHOP";
12
stry[2][4] = "512KB RAMBO";
13
stry[2][5] = NULL;
14
stry[2][6] = NULL;
15
16
stry[3][1] = "STANDART MONO";
17
stry[3][2] = "STEREO";
18
stry[3][3] = NULL;
19
stry[3][4] = NULL;
20
stry[3][5] = NULL;
21
stry[3][6] = NULL;
22
23
stry[4][1] = "KALTSTART";
24
stry[4][2] = "WARMSTART";
25
stry[4][3] = NULL;
26
stry[4][4] = NULL;
27
stry[4][5] = NULL;
28
stry[4][6] = NULL;

Aufruf der Funktion
1
menuzeichnen(menux, menuy, menustr, stry);

Und jetzt die Funktion selbst (ohne Inhalt)
1
void menuzeichnen(int x, int y, char* menustr[], char* stry)

Sicher geht das auch viel eleganter, aber da ich C newbie bin wäre ich 
ja erstmal Froh wenn es funktionieren würde.

Wo liegt mein Denkfehler oder fehler.

Danke schonmal im vorraus.

Ingo

von Ingo Uhlemann (Gast)


Lesenswert?

Ähm hier mal noch der Fehler vom GCC
passing argument 4 of 'menuzeichnen' from incompatible pointer Type

von ozo (Gast)


Lesenswert?

1
void bla(char *s[2][2]) {
2
    puts(s[0][1]);
3
    puts(s[0][0]);
4
}
5
6
int main(void) {
7
    char * stry[2][2];
8
    
9
    stry[0][0]="lala";
10
    stry[0][1]="blubb";
11
    bla(stry);
12
    return 0;
13
}

von daniel (Gast)


Lesenswert?

1
void f(int * arr){} //
2
void f(int arr[]){} // alle äquivalent
3
void f(int arr[1]){} //

analog
1
void f(int arr[10][10]);
2
void f(int arr[20][10]);
3
void f(int arr[][10]);  // auch alle äquivalent
4
void f(int (*arr)[10]);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.