Array para puntero decaimiento y pasar matrices multidimensionales a funciones
Sé que una matriz se desintegra a un puntero, de modo que si se declara
char things[8];
y luego se usathings
en algún otro lugar,things
Es un puntero al primer elemento de la matriz.
También, desde mi entendimiento, si se declara.
char moreThings[8][8];
entoncesmoreThings
esno de tipo puntero a char pero de tipo "matriz de punteros a char", porque el decaimiento solo ocurre una vez.
CuandomoreThings
Se pasa a una función (digamos con prototipovoid doThings(char thingsGoHere[8][8])
¿Qué está pasando realmente con la pila?
SimoreThings
no es de tipo puntero, entonces ¿es esto realmente un paso por referencia? Supongo que siempre pensé quemoreThings
Todavía representaba la dirección base de la matriz multidimensional. Y sidoThings
tomó entradathingsGoHere
¿Y se lo pasó a otra función?
Es la regla más o menos que a menos que uno especifique una entrada de matriz comoconst
¿Entonces la matriz siempre será modificable?
Sé que el tipo de comprobación de tipos solo ocurre en tiempo de compilación, pero todavía estoy confundido acerca de lo que técnicamente cuenta como un paso por referencia (es decir, es solo cuando se pasan los argumentos del puntero de tipo, o si la matriz de punteros sería un paso). por referencia también?)
Lamento estar un poco por todas partes con esta pregunta, pero debido a mi dificultad para entender esto, es difícil articular una pregunta precisa.