Tablica do rozpadu wskaźnika i przekazywania tablic wielowymiarowych do funkcji
Wiem, że tablica rozpada się na wskaźnik taki, że jeśli zostanie zadeklarowany
char things[8];
a następnie później używanethings
gdzieś indziej,things
jest wskaźnikiem do pierwszego elementu tablicy.
Również z mojego zrozumienia, jeśli się zadeklaruje
char moreThings[8][8];
następniemoreThings
jestnie typu wskaźnik na char, ale typu „tablica wskaźników na char”, ponieważ rozpad występuje tylko raz.
GdymoreThings
jest przekazywane do funkcji (powiedzmy z prototypemvoid doThings(char thingsGoHere[8][8])
co właściwie dzieje się ze stosem?
JeślimoreThings
nie jest typu wskaźnika, to czy jest to nadal referencja? Myślę, że zawsze tak myślałemmoreThings
nadal reprezentował adres bazowy tablicy wielowymiarowej. Co jeślidoThings
wziął wejściethingsGoHere
i sam przekazał go innej funkcji?
Czy reguła jest prawie taka, o ile nie określono wejścia tablicowego jakoconst
wtedy tablica będzie zawsze modyfikowalna?
Wiem, że sprawdzanie typu zdarza się tylko w czasie kompilacji, ale wciąż nie rozumiem, co technicznie liczy się jako podanie przez referencję (tj. Czy jest to tylko wtedy, gdy argumenty wskaźnika typu są przekazywane, czy też tablica wskaźników byłaby przepustką również przez odniesienie?)
Przykro mi, że z tym pytaniem jestem trochę wszędzie, ale ze względu na moje trudności w zrozumieniu tego trudno wyartykułować precyzyjne zapytanie.