- ベストアンサー
Static変数の必然性について
今晩は、Cの初心者です、宜しくお願いします。 Global変数とStatic変数の違いがよく分かりせん。 本を読むと、Global変数は「常に同じメモリ上に置かれどの関数からも使用できる」、Static変数は「常に同じ メモリ上に置かれ定義された関数からのみ使用できる」とかいています。 Global変数がどのようなもので、その必要性みたいなものは理解出来るのですが、Static変数については、 Global変数との違い、その必要性、実際にどのような場合に使うのかその必然性みたいものがあるのか理解できません。 いくら本を読んでも、理解出来ないのですが、宜しくご教示願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
参考リンクより引用 「Cで扱うメモリ領域は一般に、プログラム領域、静的領域、 スタック領域、ヒープ領域の 4つに大別されます。」 まず明かな違いとしてグローバル変数はスタック領域、static変数は静的領域に確保されますのでメモリの位置が異なります。 実用上の問題としては全ての変数をグローバルで扱うならstatic変数はいりませんが、一般的にグローバル変数は多用厳禁とされています。 なのでローカルに置いた方が分かりやすく、かつ変数の値を残したい場合に必要になってきます。 実際は構造体を組む時なんかに便利な機能です。 2人協力プレーの出来るゲームで魔力ゲージを共有するような場合、こんな感じで組めます。 struct Character{ int HP; //体力 static int MP; //魔力、全キャラで共有 int Attack; //攻撃力 int Guard; //防御力 int Score; //得点 //必要に応じて変数を追加していく }; void main(){ Chaacter a,b; //自機はaとbの2体 //以下略 }
お礼
みなさん、回答有り難うございました。 もう少し自分でも勉強してみます。