関数を作って、そこに int a; と入れたとします。
そしてその作った関数を何度も繰り返し使用すると、使用した分だけaという変数が作られるのでしょうか。
int a = 0 ; とするとその関数内でaを0でない値にしても、2回目以降この関数を使うとこの文の後はaが0になっているので、この文が動いていることはわかっているのですが。
今まで無視してきた初歩的なこと
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 今まで無視してきた初歩的なこと
俗にローカル変数と呼ばれる変数はブロック{}や関数に入るときに生成されて、ブロックや関数を抜けるときに破棄されます。
生成されるときに初期値が書いてあれば、その数値で初期化されます。
生成されるときに初期値が書いてあれば、その数値で初期化されます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 今まで無視してきた初歩的なこと
破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 今まで無視してきた初歩的なこと
生成と破棄を自分で全部コントロールする場合にはmalloc()とfree()を使います。weaseve さんが書きました:破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。
当然ながら破棄を忘れるなどのバグの温床となります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 今まで無視してきた初歩的なこと
そういった関数があるんですね。ちょっと調べてみると面倒な感じでしたが、使いどころがありそうですね。ありがとうございます。softya(ソフト屋) さんが書きました:生成と破棄を自分で全部コントロールする場合にはmalloc()とfree()を使います。weaseve さんが書きました:破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。
当然ながら破棄を忘れるなどのバグの温床となります。