Array-zu-Zeiger-Zerfall und Übergabe mehrdimensionaler Arrays an Funktionen
Ich weiß, dass ein Array zu einem Zeiger zerfällt, so dass, wenn man deklariert
char things[8];
und später verwendetthings
irgendwo anders,things
ist ein Zeiger auf das erste Element im Array.
Auch nach meinem Verständnis, wenn man das erklärt
char moreThings[8][8];
dannmoreThings
istnicht vom Typ Zeiger auf Zeichen, aber vom Typ "Array von Zeigern auf Zeichen", da der Zerfall nur einmal auftritt.
WannmoreThings
wird an eine Funktion übergeben (zB mit Prototyp)void doThings(char thingsGoHere[8][8])
Was ist eigentlich mit dem Stack los?
ObmoreThings
ist nicht vom Zeigertyp, ist dies dann wirklich noch eine Referenzübergabe? Das habe ich wohl immer gedachtmoreThings
stellte immer noch die Basisadresse des mehrdimensionalen Arrays dar. Was, wenndoThings
nahm EingangthingsGoHere
und selbst an eine andere Funktion übergeben?
Ist die Regel so ziemlich das, wenn man nicht einen Array-Eingang als spezifiziertconst
Ist das Array dann immer veränderbar?
Ich weiß, dass die Typprüfung nur zur Kompilierungszeit stattfindet, aber ich bin immer noch verwirrt darüber, was technisch als Referenzübergabe gilt (dh nur, wenn Argumente des Typzeigers übergeben werden oder ein Array von Zeigern als Übergabe gelten würde). als Referenz auch?)
Es tut mir leid, dass ich mit dieser Frage ein bisschen durcheinander bin, aber aufgrund meiner Schwierigkeiten, dies zu verstehen, ist es schwierig, eine genaue Anfrage zu formulieren.