質問: どの言語もそうなのですがメインのコード内で 普通に変数を宣言してそのあといつ消えるんですか? また自分で明示的に消せますか? ``` int main(){ int hoge; ... //コード func(hoge); // hogeもういらないからここでけしたい ... //コード(ここのコードの時にはもうhogeいらない) } ``` ``` var hoge:Int; ... // コード func(hoge); // hogeもういらない ... //コード(ここではもうhogeいらない) ```
回答: ローカル変数の開放タイミングについて補足です。 ローカル変数は**ブロック終了時**に解放されます(関数もブロックの一つです)。 いい例が思い浮かばないのですが、例えば、 ``` #include #include void main(int argc, char *argv[]) { char moji[] = "hogehoge"; for(int idx=0;moji[idx] != '\0';idx++){ if(islower(moji[idx])){ moji[idx] = toupper(moji[idx]); } } printf("%s\n", moji); } ``` みたいなプログラムがあった場合、forループ内で使われている`idx`という変数はforループを抜けると参照できなくなります。 仮に、forループを抜けたところで`idx`を参照するようなコードを書いた場合、コンパイル時にエラーになります(変数`idx`が宣言されていないというエラー)。