char string = "default";
printf("The default String is: %s", &string);
scanf("%s", &string);
printf("You entered: %s", &string);
最初のprintf文は&文字列をX(?_?
として出力します。 2番目のprintfは、scanf文の後に、入力した文字列を出力します。scanfを使用した後に&演算子を使用するのはなぜですか?
var演算子は「メモリアドレスはvar」を意味するので、なぜ&文字列が入力された文字列を出力しますか?なぜ「文字列」だけを使用しようとすると、セグメンテーションフォルトが発生するのですか?
あなたのコードは*未定義の動作の*と絶対だらけである:それは偶然で動作します。良い答えはかなり長いものになるでしょう。それを待ってみましょう。 – Bathsheba
非常にフィットしているラインは有効ではありません。そのために後続のラインを理由づけるのは難しいです。 –
コンパイラの警告に注意してこの質問の必要性を完全に取り除くことになったので、投票を終了してください。 –