C言語なら俺に聞け 151at TECH
C言語なら俺に聞け 151 - 暇つぶし2ch159:デフォルトの名無しさん
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 の質問では二次元配列と明記されてるから本質じゃないけど、
説明を厳密にしようとすると、触れないのは片手落ちになっちゃうよね。
& 演算子でアドレスを得るときの内部的な処理の周辺。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch