19/04/18 06:35:48.92 gmBt4t3M0.net
文字列(Cでは'\0'終端のchar配列)を格納できる変数 char s[SIZE]; に対して、
文字列を格納したい場合は
scanf("%s", s); // 連続したメモリ領域 s[0], s[1], s[2] ... に格納
配列名 s は &s[0](配列の先頭要素へのポインタ)と、値と型が等しい
1文字だけ格納したい場合は
scanf("%c%c", &[0], &s[1]); // s[0] と s[1] に1字ずつ格納
&s[0] は s と同じだが、 &s[1] との対応から &s[0] と書く方が分かりやすい
「配列名が暗黙に先頭要素へのポインタに変換される」話と、
「何を操作しているかをソースの書き方で明瞭に表現しようぜ」って話と、
整頓されずに混乱してるんじゃないかな。
「Cでは“文字列”とは何か」も絡んでるかも。
それに加えて、2次元配列という、これまたCではやや微妙な問題が噛んでるし。
char array[ROW][COLUMN]; // charの2次元配列
char *array[LINE]; // charへのポインタの1次元配列
>>149 の質問では二次元配列と明記されてるから本質じゃないけど、
説明を厳密にしようとすると、触れないのは片手落ちになっちゃうよね。
& 演算子でアドレスを得るときの内部的な処理の周辺。