C 基本講座

変数の記憶クラスについて

LinkedInラーニングの無料トライアルを今すぐ試そう

無料で視聴する すべての加入プランを見る
このレッスンでは、変数の格納の方法を決める「記憶クラス」について説明します。
講師:
07:46

字幕

このレッスンでは、変数の格納場所を決める記憶クラスについて説明します。記憶クラスとは宣言する変数をどこに記憶するかを指定することですが変数は記憶する場所で寿命が異なってきます。ローカル変数はメモリ上のスタック領域に確保され通用範囲を外れると消滅します。これを記憶クラスの立場で見ると自動変数と呼びます。自動変数には、次のような特徴があります。関数内部で宣言され、宣言された関数の中でのみ使用可能です。宣言と同時にスタック領域に確保されます。変数宣言を含むブロック終端の}でスタック領域から消滅します。関数が呼ばれるたびに初期化を行います。明示的に初期化を行わないと、初期値は不定値になります。このプログラムには、func1 と func2 のそれぞれでローカル変数が宣言されていますがこれらは自動変数でもあります。自動変数は関数が呼ばれるたびにスタック領域に確保され関数が終了すると消滅します。このプログラムでは、それぞれの関数で自動変数の値とアドレスを表示しています。では、実行してみましょう。実行してみると、このようにアドレスが重複していることが分かります。func1 が呼ばれた時に宣言された自動変数はfunc1 が終了する時に消滅します。 そして func2 が呼ばれたときに宣言された自動変数はfunc1 の変数が開放したメモリ領域に確保されるのでこのようにアドレスが重複するのです。自動変数では、このようにしてメモリ領域を有効活用しています。また、自動変数は関数が呼ばれるたびに初期化を行い初期化を行わないと、初期値は不定値になります。試しにこの初期化の部分を消してしまうと実行してみるとこのように不定値が表示されます。これは元に戻しておきましょう。ローカル変数は自動変数ですがグローバル変数は外部変数です。外部変数の特徴は、このようなものです。関数外で宣言され、宣言以降のどの関数からでも使用可能です。プログラムの開始時に一度だけ初期化を行います。明示的に初期化を行わない場合は初期値は0になります。プログラム実行中に静的領域の常に同じ場所に配置され値を保持します。このプログラムでは、これが外部変数になります。外部変数の値をそれぞれの関数で表示してみたいと思います。実行してみましょう。このように同じアドレスが表示されています。自動変数の場合には開放されたアドレスに再度確保されるので同じアドレスを示していますが外部変数の場合には、プログラム実行中は常に同じ場所に配置されるのでこのように同じアドレスになっています。 自動変数とはだいぶ離れた場所にアドレスが表示されていますね。実は外部変数の場合には静的領域と言われるところに確保されるのです。また、外部変数は明示的に初期化を行っていませんが値はこのように0になります。もう一つ、押さえておいてほしい変数の種類に静的変数があります。これは自動変数と外部変数の特徴を併せ持った変数でこのような特徴があります。プログラム実行中に静的領域の常に同じ場所に配置され値を保持します。関数内部で宣言した場合は、その関数の中でのみ使用可能です。プログラムの開始時に一度だけ初期化を行います。明示的に初期化を行わない場合は、初期値は0になります。static 記憶クラス指定子を用いて、「static int a;」のように宣言します。このプログラムは min1 と min2 の関数で渡された引数の中で1番小さな値を返却するものです。このように min1 と min2 は内容はほとんど同じですがmin1 では最小値を保持するこの変数 min を自動変数にしていますがmin2 の方は、このように static を付けて静的変数にしています。実行してみましょう。このように表示されました。 自動変数を使った min1 では最小値を返していませんね。今 min1 には 100、10、50 が続けて渡されていますが実行結果を見るとその値をそのまま表示しています。自動変数の min の場合には関数が呼ばれるたびに変数が新しくなり前回呼ばれた時に記憶した最小値がなくなってしまうからです。min2 の方はきちんと値を保存してそして最小値を表示しています。ここはちょっと邪魔なので伏せておきます。このように、min を static を付けて静的変数にすると値を常に保持することができるので100 の次に 10 になりその後、50 を比較しても10 のままになって最小値を表示することが出来るのです。外部変数でも同じように値は保存できますが外部変数を使うのはプログラム全体を管理するために使う変数プログラム全体で参照する変数に留めるべきです。ですから、この min のように局所的に用いるけれどもプログラム実行中は値を保持したい変数は静的変数にしましょう。このレッスンでは、変数の格納の方法を決める記憶クラスについて説明しました。

C 基本講座

C言語はUNIXというOSを記述するために開発されたプログラミング言語で、組み込みシステムの開発を中心に今も使われています。このコースでは簡単なプログラムを作成しながら、C言語の基本的な文法を学びます。データ型や制御文などの基礎的な文法からポインタや構造体といったC言語の特徴的な内容まで幅広く取り上げます。よく使われる標準ライブラリ関数も数多く紹介します。

5時間45分 (60 ビデオ)
現在、カスタマーレビューはありません…
ソフトウェア・トピック
プラン加入者限定
発売日:2017年11月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。