なぜこのコードが予期せぬ出力を出すのですか?Cでアドレスを返す
int * func(int *xp)
{
int y = 10 + *xp;
return (&y);
}
void main()
{
int x = 10;
int *xp = func(&x);
printf("%d\n", x);
printf("%d\n", *xp);
}
予想される出力:
10
20
実出力:
10
1074194112
'void main' ** ARRRRRRRRGGGGGGGGHHHHHHH!** – pmg
よくある質問の種類。 [Eric Lippertの説明](http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope/6445794#6445794)を参照してください。 1851 upvotes and counting ... – eran
@pmg void mainの問題は何ですか?コンパイラがそれに対してエラーを出さないとき、なぜあなたは気になるのですか? –