スコープ
変数の寿命と有効範囲を指定する。ローカル変数
※基本、「{}」ブロック内のみ有効#include <stdio.h> void ecoho(void); int main(void){ ←ecoho関数内の変数Fの存在がわからない。 ecoho(); ecoho(); return 0; } void ecoho(void){ int F=0; ←ローカル変数:関数内のみの存在 F++; printf("%d回目\n",F); }
表示イメージ
1回目
1回目
1回目
グローバル変数
プログラム開始時に0自動初期化#include <stdio.h> int counta; ←グローバル変数:記述したソースファイル内全体で存在。 void ecoho(void); int main(void){ ←ecoho関数内の変数Fの存在がわからない。 ecoho(); ecoho(); return 0; } void ecoho(void){ int F=0; ←ローカル変数:関数内のみの存在 F++; counta++; printf("ローカル%d回目\n",F); printf("グローバル%d回目\n",counta); }
表示イメージ
ローカル1回目
グローバル1回目
ローカル1回目
グローバル2回目
グローバル1回目
ローカル1回目
グローバル2回目
グローバル変数とローカル変数 優先順位
ローカル変数の方が優先されるスタティック変数
- プログラム開始時、1回だけ0で自動初期化
- 宣言したブロック()関数)内のみ存在するが、プログラムが終了するまで値を保持。
#include <stdio.h> int counta; ←グローバル変数:記述したソースファイル内全体で存在。 void ecoho(void); int main(void){ ←ecoho関数内の変数Fの存在がわからない。 ecoho(); ecoho(); return 0; } void ecoho(void){ static int cnt; ←スタティック変数: int F=0; ←ローカル変数:関数内のみの存在 F++; counta++; printf("ローカル%d回目\n",F); printf("グローバル%d回目\n",counta); }