配列がポインタに減衰することを知っています。
char things[8];
その後、別の場所で使用されるthings
のthings
は、配列の最初の要素へのポインタです。
また、私の理解から、
char moreThings[8][8];
減衰は1回だけ発生するため、charへのポインタ型でmoreThings
はなく「charへのポインタの配列」型になります。
いつmoreThings
関数に渡されますか(プロトタイプvoid doThings(char thingsGoHere[8][8])
では、スタックで実際に何が起こっているのでしょうか?
がポインタ型でない場合moreThings
、これは本当に参照渡しですか?moreThings
それでも多次元配列のベースアドレスを表しているといつも思っていたと思います。doThings
入力を受け取りthingsGoHere
、それ自体が別の関数に渡した場合はどうなりますか?
配列入力を指定しない限りconst
、配列は常に変更可能であるという規則はほとんどありますか?
型チェックはコンパイル時にのみ行われることは知っていますが、技術的には参照によるパスとしてカウントされるものについてはまだ混乱しています(つまり、型ポインターの引数が渡された場合のみ、またはポインターの配列がパスになる場合のみです-参照によっても?)
この質問で少しいたるところにいて申し訳ありませんが、これを理解するのが難しいため、正確な質問を明確にするのは難しいです。