www.mikrocontroller.net

Forum: Compiler & IDEs mehrdimensionales Array an Funktion übergeben


Autor: Ingo Uhlemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
char* stry[4][6];
stry[1][1] = "Qme4.04";
stry[1][2] = "XL-OS";
stry[1][3] = "SPEEDER-OS";
stry[1][4] = "OLD-OS BIBOMON";
stry[1][5] = "OmniMon";
stry[1][6] = "OmniView";

stry[2][1] = "AUS";
stry[2][2] = "256KB RAMBO";
stry[2][3] = "256KB COMPYSHOP";
stry[2][4] = "512KB RAMBO";
stry[2][5] = NULL;
stry[2][6] = NULL;

stry[3][1] = "STANDART MONO";
stry[3][2] = "STEREO";
stry[3][3] = NULL;
stry[3][4] = NULL;
stry[3][5] = NULL;
stry[3][6] = NULL;

stry[4][1] = "KALTSTART";
stry[4][2] = "WARMSTART";
stry[4][3] = NULL;
stry[4][4] = NULL;
stry[4][5] = NULL;
stry[4][6] = NULL;

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

Und jetzt die Funktion selbst (ohne Inhalt)
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

Autor: Ingo Uhlemann (Gast)
Datum:

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

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void bla(char *s[2][2]) {
    puts(s[0][1]);
    puts(s[0][0]);
}

int main(void) {
    char * stry[2][2];
    
    stry[0][0]="lala";
    stry[0][1]="blubb";
    bla(stry);
    return 0;
}

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void f(int * arr){} //
void f(int arr[]){} // alle äquivalent
void f(int arr[1]){} //

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.