Download presentation
Presentation is loading. Please wait.
1
プログラミング 2 静的変数
2
広域変数と局所変数 (通常の)局所変数 広域変数 関数(ブロック)の中で定義される変数 関数(ブロック)の中だけで通用する
定義された関数(ブロック)の外では見えない 関数(ブロック)の実行のたびに作られ,実行が終了すると 消滅する 広域変数 関数の外で定義される変数 定義以降ファイル全体で通用する プログラム実行の間,1 つの実態を持つ 関数の実行が終了しても消えない
3
static を伴う局所変数 static を伴う局所変数 static を伴う変数を使うと,関数に状態を持たせるこ とができる
関数(ブロック)内で定義される 関数(ブロック)の中だけで通用する プログラム開始時に一度だけ実体が作られ,プログラム終了 まで生存する 関数(ブロック)の実行が終了しても消滅しない static を伴う変数を使うと,関数に状態を持たせるこ とができる
4
static 変数の例(1) void func(void) { int a = 0; printf(“%d\n”, a); a++; return; } int main(void) { int i; for (i = 0; i < 10; i++) { func(); } return 0; }
5
static 変数の例(2) void func(void) { int a = 0; printf(“%d\n”, a); a++; return; } この a は通常の局所変数 関数実行のたびに作られ,関数の実行が終了すると消滅 「a++」されても関数終了で消えてしまう 出力されるのは毎回「0」
6
static 変数の例(3) void func(void) { static int a = 0; printf(“%d\n”, a); a++; return; } int main(void) { int i; for (i = 0; i < 10; i++) { func(); } return 0; }
7
static 変数の例(4) void func(void) { static int a = 0; printf(“%d\n”, a); a++; return; } この a は static を伴う局所変数 プログラム開始時に一度だけ作られ(初期化も一度だけ), 関数が終了しても消えない 「a++」されたことが保持される 呼び出しのたびに出力される値は 1 ずつ大きくなる
8
static 変数の特徴 通用範囲 生存期間 通常の局所変数 関数(ブロック)内 static 局所変数 プログラム実行中ずっと 広域変数
ファイル内(宣言以降)
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.