講義に関して,ちょびっとコメント
レポートの採点状況は,こちらとこちらです.
今回は,2回分をまとめて本ページで扱っています.提出するレポートのメールは1通となります.
データの有効範囲
今日のポイント
C言語では,複文を表すために「{」と「}」で囲っていましたが,これにはもう一つの意味があります.
変数を用いるとき,最初に宣言をしますが,その変数を使うことができる範囲(有効範囲)は,この{と}で囲われた中だけです.
その中で,さらに同じ名前の変数を宣言した場合,その範囲においては,内側の宣言が前の宣言を上書きします.
それゆえ,関数の中で用いる変数名は,呼び出し元と同じ変数名であっても,中身が異なるわけです.
main関数の外(すなわち,1つも{や}で囲われていない部分)が,プログラムの一番大外の範囲です.
ここに書かれた宣言は,その内側全てに影響しますので,グローバル変数と呼ばれます.
言い方を変えると,プロクラム内のどこからでもこの変数を参照する(=扱う)ことができます.
一方,関数の中(すなわち{や}で囲われている部分)で宣言した変数は,その範囲を終えると破棄されます.
これをローカル変数と呼びます.
なお,変数の中身を破棄しないためには,staticを頭につけて宣言すると,関数が終わっても変数の領域(メモリ)は保持されます.
ただし,メモリを解放しませんので,メモリが少ない計算機でプログラムするときには気をつけて下さい.
C言語の場合,複数のソースファイルを結合(リンク)してコンパイルし,1つのプログラムを作ることができます.
それらファイル間にまたがって変数を共有したいときは変数の宣言時にexternalを頭につける必要があります.
※今日は,この部分は扱いませんので,大きなプログラムを書く人は,そのときにこの部分を思い出して下さい.
今日の後半(課題12-4,12-5)のファイルを扱う部分は,【発展】とします.
時間が足りない人は,未提出でも問題ありません.
なお,課題12-6は全員が提出する必要がありますので,気をつけて下さい.
|