Forum: Compiler & IDEs Pointer auf Pointerarray


von Lukas K. (carrotindustries)


Lesenswert?

Hallo Zusammen,
ich habe den Inhalt eines Menüs als
1
const char *modesw_menu_list[SWITCH_MENU_LEN];
 deklariert. Also ein array mit pointern auf const char. Nun soll die 
Menüfunktion darauf einen Pointer erhalten.
Diese sieht so aus
1
unsigned char makemenu(unsigned int lower, unsigned int upper, char *item, const char **list[])
 In Ihr wir mit *list[*item] darauf zugegriffen.
Aufgerufen wird sie mit
1
makemenu(0, SWITCH_MENU_LEN-1, &modesw_currentitem, &modesw_menu_list);

Der Compiler (MSPGCC) meint dazu:
1
menu.h:12: note: expected 'const char ***' but argument is of type 'const char * (*)[8]'

Wie sag ich dem GCC also, was ich will?

von Mark .. (mork)


Lesenswert?

const char **list[] ist in diesem Fall das gleiche wie const char 
***list, also ein Zeiger auf einen Zeiger auf einen Zeiger auf const 
char. Was Du brauchst ist aber ein const char**, mach also das [] weg, 
ebenso das & vor modesw_menu_list beim Funktionsaufruf.

MfG Mark

von Lukas K. (carrotindustries)


Lesenswert?

Danke, so geht's. Doch ist das nun wirklich ein Call by Reference oder 
ein Call by value?

von Mark .. (mork)


Lesenswert?

Es wird ein Zeiger auf das Poiner-Array modesw_menu_list übergeben -> 
Call by Reference.

MfG Mark

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.