前回までの説明で変数の宣言の方法はわかったと思いますが、
変数を宣言する場所で、変数の役割が少し変わってきます。
具体的には、宣言項目で宣言する場合と、関数内で宣言する場合で、
変数の扱いが変わります。
宣言項目で宣言する場合
宣言項目で変数を宣言した場合、
宣言された変数はそのプログラム内のどこでも有効になります。
宣言された変数はそのプログラム内のどこでも有効になります。
また、変数に入力された値は引き継がれます。
関数内で宣言する場合
関数内で変数を宣言した場合、
宣言された変数は宣言された関数内だけで有効になり、他の関数等で使用することはできません。
文章だけだとわかりにくいと思いますので、例を挙げて説明します。
宣言項目で宣言する場合
int a=10;
int init()
{
a--;
}
int start()
{
a++;
}
このような変数の使われ方をした場合、
最初の宣言項目では a の値は 10 です。
init に来た時には a は 10 のままですが、init 内で 1 を引く計算をしていますので、
init の終わりでは 9 になっています。
start に来た時には a は 9 ですが、start 内で 1 を足す計算をしていますので、
start の終わりでは 10 になっています。
そして、ティックが進むごとに start が実行されるので、
1 ティック進むと a の値は 1 ずつ増えていき、これが繰り返されます。
関数内で宣言する場合
int init()
{
int a=10;
a--;
}
int start()
{
int a;
a++;
}
このような変数の使われ方をした場合、
init で宣言した a は 10 ですが、init 内で 1 を引く計算をしていますので、
init の終わりでは 9 になっていますが、
init 内で宣言しているので、init の処理が終わると変数 a そのものが無くなります。
start で a だけ宣言していますが、init の値は引き継がれません。
宣言だけした場合は 0 が自動的に入ります。
ですので、start の最初の a は 0 です。
start 内で 1 を足す計算をしていますので、start の終わりでは 1 になっています。
そして、ティックが進むごとに start が最初から実行されます。
先ほどは、1 ティック進むと a の値は 1 ずつ増えていきましたが、
この場合は、start が終わった時点で、変数 a 自体が無くなっていますので、
a の値は 0 から始まります。
そして start の終わりの時点で 1 になっていて、
start の処理が終わると変数 a 自体が無くなります。
プログラム全体を通して使用したい変数は、最初の宣言項目で宣言し、
関数内でしか使用しないものは関数内で宣言して使用します。
どちらがいい悪いはありませんので、使いやすいように使ってください。 (^-^)ノ~~