Loose-Info.com

Last Update 2019/12/24


TOP - C言語 - 宣言 - static

staticを付けて宣言を行うと、変数や関数の適用範囲を限定する事が可能です。

・外部変数(関数)の場合
変数(関数)がコンパイルされた同一ファイル内からのみ利用可能

・内部変数の場合
宣言された関数の内部からのみ利用可能
static宣言された変数の内容は永続的に保持される

(例)
#include <stdio.h> void test_func(int i) { static double test1; if (i == 0) { test1 = 1.0; } test1 = test1 + 1.0; printf("%3.1f\n", test1); } void test_func2(int i) { double test1; if (i == 0) { test1 = 1.0; } test1 = test1 + 2.0; printf("%3.1f\n", test1); } int main() { int i; for (i=0; i<3; i++) { test_func(i); test_func2(i); printf("-----------\n"); } return 0; }

実行結果
2.0 3.0 ----------- 3.0 <- static指定されているため値が保持されている。以降の実行も同様の結果となる。 2.0 <- static指定せず初期値指定されていないため値は不定(この場合は初期値が0.0となっていると考えられる) ----------- 4.0 2.0 -----------