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

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

char things[8];

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

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

char moreThings[8][8];

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

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

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

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

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

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

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

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