c言語の配列に関してです。分かりやすく詳しい解説お願いします。 #include <stdio.h> int main(void) { char name[20];
c言語の配列に関してです。分かりやすく詳しい解説お願いします。 #include <stdio.h> int main(void) { char name[20]; printf("あなたの名前は?"); scanf("%s",name); printf("%sさん、おつかれさま。\n",name); return 0; } ここの[20]は入力できる文字数を表しているようですが、例えば[2]として 「やまだたろう」と打ち込むと画面に表示されてしまいます。 やまだたろうは5文字です。 []内の数字は入力できる文字数という意味の数字じゃないということですか?
ベストアンサー
[]内の数字は、その配列として安全に使用できると保証される数。 実はメモリ内に区切りは無いから、その数を超えて使うこともできる。 しかし、その場合は既に他の用途で使用していたメモリを上書きしてしまうかも知れない。 そうすると、何が起こるかわからない。怖いことが何も起こらなかったら、それは運が良かっただけ。 ちなみにやまだたろうはひらがなでは5文字だがC言語的にはもっと大きい数字になる。具体的な数は文字コードによるのでわからないが。
例えば、[1000]としておけば、このプログラムで怖いことは絶対におこらないと断言できるという認識でよいのですか? 名前が1000文字の人はいないので…
質問者からのお礼コメント
分かりやすい説明ありがとうございました。もう一人の方もありがとうございます。
お礼日時:5/22 2:00