C言語

【大学の課題で出るC言語】静的変数を使って最大値・最小値を求める

大学の課題で出るC言語、静的変数を使って最大値、最小値を導き出そう

どうも多浪Fランぼっち底辺大学生です。

 

今回は、静的(スタティック)変数を使って入力値の最大値・最小値を導くプログラムを紹介していきます。

配列は使わずに、静的変数を使って最大値・最小値を求めたい!!

と言った内容に関して書いていきます。

この記事の内容
  • 静的(スタティック)変数の説明
  • 静的変数の使い方
  • 静的変数を使って最大値・最小値を求める

このようなことを知りたい人はサッと目を通してみて下さい。

それでは行ってみましょう(‘ω’)ノ

静的変数とは?

静的変数とは「新・明解C言語 入門編」によると

プログラムの開始時、具体的にはmain関数を実行する前の準備段階でオブジェクトが生成され、プログラムの終了時に破棄される。

すなわち、”永遠の命”が与えられるわけです。

新・明解C言語 入門より

このように説明されています。

 

そして、実際のコードの書き方としては以下の通りとなります。

 

・・・・・

 

この説明を見ても、良く分からない人は多いのではないでしょうか?

分かんないってばよぉ~

と言うことで、今度は具体例を示して静的変数を説明します。

プログラムと実行例を示すぜ




静的変数の使い方の具体例

具体例を示すにあたって、プログラムの仕様を以下のように定義します。

  • int func()関数の中に整数型の静的変数を定義
  • func()関数内では静的変数の値に2を加算する。
  • func()関数が呼び出された回数をカウントする
  • func()関数が呼び出された回数と静的変数の値を出力する
簡単なプログラムなので、静的変数の動作に着目してみてください

それでは、プログラムを示します。

このプログラムを実行すると、以下のようになります。

静的変数の使い方に関する実行結果

呼び出し回数が増えるごとに、静的変数の値も2ずつ増えていることが分かります。

このような動作こそが静的変数の特徴であると言えます。

 

この具体例を通して静的変数を理解したことでしょう。

しかし、まだよく分かっていない人もいると思います。

静的変数使う意味がイマイチ分からん・・・・

ということで、静的変数を使った場合と使わなかった場合の実行結果を見てもらいたいと思います。

静的変数を使う場合と使わなかった場合の違い

先ほどのプログラムの静的変数を、静的ではない変数に変更して実行結果を示したいと思います。

この一文のプログラムから、”static”を取り除きます。↓↓

 

そして、実行結果は以下のようになりました。

静的変数を使わなかった場合の実行結果

呼び出し回数が増えても、静的変数の値は一定のままです。

なぜだ?

理由としては、func()関数が呼び出されるごとに”num”変数が初期化されるからです。

func()関数が呼び出されるごとに、「int num = 0」が実行されて初期化される。

 

因みに、静的変数を使った場合も「static int num = 0」と初期化を行っています。

しかし、静的ではない変数とは異なり、初期化が一回だけしか行われない点に注意したいところです。

また、静的変数が初期化(定義)された瞬間から、プログラムが終了するまで値が保持され続ける点にも気を付けたいところですね。

以上が静的変数の説明でした。

静的変数まとめ
  • 静的変数自体は、定義された瞬間からプログラム終了時まで保持される
  • 静的ではない変数自体は、関数内のみでしか保持されない

静的変数を使って最大値・最小値を求めるプログラム

ここまで、静的変数についてザックリと説明してきました。

さて、それでは静的変数を使った最大値・最小値を求めるプログラムを示していきたいと思います。

仕様は以下の通りです。

  • 最大値を求めるmax_value(int n)関数を定義
  • 最小値を求めるmin_value(int n)関数を定義
  • データの個数分だけデータを入力し、最小値と最大値を更新
  • 最小値と最大値の初期値は、1回目のデータとする

このプログラムを実行すると、以下の実行結果となりました。

実行結果

仕様通りに実行できました。

チョット解説

今回は3類の静的変数を設けました。

  1. max・・・最大値を保持
  2. min・・・最小値を保持
  3. j   ・・・関数の呼び出し回数を保持

maxはmax_value関数内で宣言している静的変数であり、最大値を保持する変数です

minはmin_value関数内で宣言している静的変数であり、最小値を保持する変数です。

jはmax_value関数及びmin_value関数で宣言している静的変数であり、それぞれの関数が呼び出された回数を保持する役割を持った変数です。

 

静的変数”j”に関しては、「最小値と最大値の初期値は、1回目のデータとする」の仕様を実装するために設定しました。

※グローバル変数でもよかったのですが、あえて静的変数にしました(‘ω’)ノ

おわり

以上で、静的変数を使って最大値・最小値を求めるプログラムの紹介を終わります。

静的変数はあまり使い道が無いような・・・気がしますが、サラッと覚えられるのでこの記事を読んで覚えてしまいましょう。

プログラミングの参考書
【大学生の課題で出るC言語】持っておくべきおすすめの参考書どうも多浪Fランぼっち底辺大学生です。 今回はC言語プログラミングを履修している大学生におすすめの参考書の紹介をします。 ...
人気ブログランキング