今まで無視してきた初歩的なこと

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
weaseve
記事: 29
登録日時: 12年前

今まで無視してきた初歩的なこと

#1

投稿記事 by weaseve » 12年前

関数を作って、そこに int a; と入れたとします。
そしてその作った関数を何度も繰り返し使用すると、使用した分だけaという変数が作られるのでしょうか。
int a = 0 ; とするとその関数内でaを0でない値にしても、2回目以降この関数を使うとこの文の後はaが0になっているので、この文が動いていることはわかっているのですが。

Foo

Re: 今まで無視してきた初歩的なこと

#2

投稿記事 by Foo » 12年前

こんばんは。
作られるけどスコープを抜けた時点で破棄される、
といった感じだったと思います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 今まで無視してきた初歩的なこと

#3

投稿記事 by softya(ソフト屋) » 12年前

俗にローカル変数と呼ばれる変数はブロック{}や関数に入るときに生成されて、ブロックや関数を抜けるときに破棄されます。
生成されるときに初期値が書いてあれば、その数値で初期化されます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

weaseve
記事: 29
登録日時: 12年前

Re: 今まで無視してきた初歩的なこと

#4

投稿記事 by weaseve » 12年前

破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 今まで無視してきた初歩的なこと

#5

投稿記事 by softya(ソフト屋) » 12年前

weaseve さんが書きました:破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。
生成と破棄を自分で全部コントロールする場合にはmalloc()とfree()を使います。
当然ながら破棄を忘れるなどのバグの温床となります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。


weaseve
記事: 29
登録日時: 12年前

Re: 今まで無視してきた初歩的なこと

#7

投稿記事 by weaseve » 12年前

softya(ソフト屋) さんが書きました:
weaseve さんが書きました:破棄されるんですね。ありがとうございます。もしかして作るだけでなく消す必要があるのかと思ってモヤモヤしていたもので。
生成と破棄を自分で全部コントロールする場合にはmalloc()とfree()を使います。
当然ながら破棄を忘れるなどのバグの温床となります。
そういった関数があるんですね。ちょっと調べてみると面倒な感じでしたが、使いどころがありそうですね。ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る