関数とプログラムの構造について
スコープ
使いこなすと便利ですが、最初はわかりにくいのがスコープです。変数の有効範囲をスコープと呼び、外部変数と内部変数(局所変数とも呼びます)に分けられます。
外部変数とは、すべての関数の外に当たる部分で定義され、どの関数からでも参照・操作することができます。関数の引数が増大するのを防ぐために利用されることが多いですが、どこの関数で値を変えられたかを把握しにくいです。そのため、プログラムを修正するためには全体への影響を考慮しなくてはいけないため、メンテナンス性に欠けるプログラムとなってしまいます。ある関数内で外部変数の値を変更して、関数を抜けたとしても値は残っており、その値を他の関数でも使用することができます。
一方、内部変数と呼ばれるものは関数内で定義するもので、定義した関数の中でしか存在しません。関数Aの中で宣言したcnt変数があったとしても、関数Bではそのような変数は存在していないことになります。
逆に、関数Bでもcntという変数を宣言して使用することが出来るということです。関数を跨ぐ場合には引数などで受け継ぐことにより、複数関数での共有が可能です。複数人数の開発で、関数ごとに担当者を振り分ける場合にも、変数名の命名は自由にできるため、特別な理由がない場合は内部変数で値を扱うほうが良いでしょう。内部変数の注意点としては、宣言しただけでは変数の値が不定であるため、明示的に初期化する必要があります。これはバグの原因となりやすいことなので注意しましょう。