1
私はこのコードが間違っていることを認識しています。 しかし、私は誰かが説明できるかどうか私が疑問に思っていた好奇心をそそぐいくつかの行動に出くわしました。scanfの不思議な振る舞い
例1:
char *foo;
scanf("%s",foo);
printf("%s",foo);
出力される。(ヌル)。
例2:
int i;
char *foo;
scanf("%s",foo);
printf("%s",foo);
出力は次のようになります。FOOのヴァル!
int iの存在が、なぜ「動作する」の原因になるのでしょうか?
動作しません。あなたが期待していることをしているように見えますが、それは未定義の動作なので重大なバグです。 – delnan
投稿した内容から、fooは価値がありません。割り当てられていないメモリへのポインタです。 – SlappyTheFish
私はあなた自身のプログラムでこの種のバグを見つけたのはかなり厄介なことだと思います。 ;) – BlackBear