Массив для затухания указателя и передачи многомерных массивов в функции

Я знаю, что массив распадается на указатель, так что если один объявил

char things[8];

а потом использовалthings где-нибудь еще,things указатель на первый элемент в массиве

Кроме того, насколько я понимаю, если

char moreThings[8][8];

затемmoreThings являетсяnot указатель типа на тип char, но тип & quot; массив указателей на тип char & quot; потому что распад происходит только один раз.

когдаmoreThings передается в функцию (скажем, с прототипомvoid doThings(char thingsGoHere[8][8]) что на самом деле происходит со стеком?

ЕслиmoreThings это не тип указателя, тогда это действительно все еще передача по ссылке? Я думаю, я всегда думал, чтоmoreThings по-прежнему представляет базовый адрес многомерного массива. Что, еслиdoThings принял входthingsGoHere а сам передал это другой функции?

Является ли правило в значительной степени тем, что если не указать вход массива какconst тогда массив всегда будет изменяемым?

Я знаю, что проверка типа происходит только во время компиляции, но я все еще не понимаю, что технически считается передачей по ссылке (т. Е. Происходит ли это только тогда, когда передаются аргументы указателя типа, или массив указателей будет проходным). по ссылке тоже?)

Извините, что был немного повсюду с этим вопросом, но из-за моей трудности в понимании этого трудно сформулировать точный вопрос.

Ответы на вопрос(3)

Ваш ответ на вопрос