C言語における静的変数(static変数)の初期化方法を徹底解説
静的変数(static変数)とは
C言語において、staticキーワードを付けた変数・データメンバ・関数は、プログラムの実行中に再度変更されることがなく、プログラムの生存期間全体にわたってメモリが確保されます。また、静的な関数はクラス名を用いて直接呼び出すことも可能です。
静的変数は一度だけ初期化されるという重要な特徴を持っています。コンパイラはその変数をプログラムが終了するまで保持し続けます。静的変数は関数の内側でも外側でも定義でき、定義されたブロック内でのみ有効なローカルな存在となります。明示的に初期化しない場合、静的変数のデフォルト値は0(ゼロ)に設定されます。つまり、静的変数はプログラムの実行が終了するまで生存し続けるのです。
静的変数の宣言構文
C言語で静的変数を宣言する際の基本構文は以下の通りです。
static データ型 変数名 = 初期値;
各要素の意味は次のとおりです。
- データ型 − int、char、float など、変数の型を指定します。
- 変数名 − プログラマが任意に決める変数の名前です。
- 初期値 − 変数を初期化するための任意の値です。省略した場合は自動的に0で初期化されます。
サンプルコード
以下は、C言語における静的変数の具体的な使用例です。
Example
#include <stdio.h>
int main() {
static int a = 8;
int b = 10;
printf("Value of static variable : %d\n", a);
printf("Value of non-static variable : %d\n", b);
return 0;
}
Output
Value of static variable : 8
Value of non-static variable : 10
コードの解説
上記のプログラムでは、2つの変数を宣言しています。1つはstaticを付けた静的変数 a、もう1つは通常の非静的変数 b です。それぞれ異なる値で初期化され、printf関数によって画面に出力されます。
static int a = 8; // 静的変数:プログラム終了まで値が保持される
int b = 10; // 非静的変数:ブロックを抜けると破棄される
printf("Value of static variable : %d\n", a);
printf("Value of non-static variable : %d\n", b);
このように、静的変数は一度だけ初期化され、その後スコープを抜けても値が保持され続ける点が、通常のローカル変数との大きな違いです。関数が何度呼び出されても静的変数の値はリセットされないため、呼び出し回数のカウントや状態の保持などに活用できます。
-
Bashの変数の基本:設定・削除・子プロセスへの渡し方を実例付きで解説
コンピュータサイエンス(そして日常的なコンピューティング)において、変数とは、後で使う情報を一時的に保持しておくメモリ上の場所のことです。言い換えれば、データを入れたり取り出したりするための一時的な保管容器です。Bashシェルでは、そのデータは単語(コンピュータ用語では「文字列」)でも数値(「整数」)でも構いません。 パソコンで意識的に変数を使ったことがない人でも、生活の中では変数に相当するものを使っているはずです。「あれを取って」「これを見て」といった言葉は、文法上の変数(代名詞)です。「これ」や「あれ」が何を指すのかは、話し手が頭の中で思い浮かべているものや指差している対象によって決まりま
-
【初心者向け】PowerShellの変数の基本:作成・確認・削除・追加の方法をわかりやすく解説
コンピュータサイエンスにおいて、変数とは後で利用するために任意の情報を格納しておくメモリ上の場所のことです。言い換えれば、データを一時的に保存し、必要なときに取り出すための「入れ物」です。シェル環境では、そのデータは単語(文字列)でも数字(整数)でも構いません。 パソコンで意識的に変数を使ったことがない人でも、日常生活の中で変数に近いものを使っているはずです。「あれを取って」「これを見て」といった言葉は、文法上の変数(いわゆる代名詞)と言えます。「これ」「あれ」が何を指すのかは、話し手が頭に思い浮かべているものや指差している対象によって決まります。数学でも未知の値を記号で表しますが、それも立派