私の考えでは、常に、定義はストレージの割り当てを意味します。
次のコードでは、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
}