私の考えでは、常に、定義はストレージの割り当てを意味します。
次のコードでは、int iプログラムスタックに4バイト(通常)のストレージを割り当ててにバインドしi、i = 3そのストレージに3を割り当てます。ただし、のためにgoto、定義はバイパスされます。これは、に割り当てられたストレージがないことを意味しiます。
f()ローカル変数は、それらが存在する関数のエントリ(この場合)または定義のポイントのいずれかで割り当てられると聞きました。
iしかし、いずれにしても、まだ定義されていない(ストレージがまったくない)ときにどのように使用できますか?実行時に値3はどこに割り当てられi = 3ますか?
void f()
{
goto label;
int i;
label:
i = 3;
cout << i << endl; //prints 3 successfully
}