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.

questionAnswers(3)

yourAnswerToTheQuestion