この記事では、C言語におけるstatic変数
の仕様と使い方について解説します。
static変数
は、特定のスコープ内でのみ有効な変数であり、値を保持しながらプログラム全体で利用することができます。
また、static付きのグローバル変数を使用することで、変数のスコープを制限し、プログラムの保守性を向上させることができます。
初心者の方にもわかりやすく解説していきますので、ぜひご覧ください。
static変数とは
プログラミングにおいて、static変数
は特定のスコープ内でのみ有効な変数です。
static変数
は、そのスコープ内で一度だけ初期化され、その後も値が保持され続けます。
この特徴により、static変数
は関数呼び出しのたびに初期化されるローカル変数とは異なり、値を保持しながらプログラム全体で利用することができます。
static変数の概要
static変数
は、通常の変数と同様にデータを格納するために使用されますが、そのスコープが制限されています。
static変数
は、関数内やブロック内などの特定のスコープ内で定義されます。
このため、static変数
はそのスコープ内でのみアクセス可能であり、他の関数やブロックからは直接アクセスすることができません。
static変数の特徴
static変数
の特徴は以下の通りです。
初期化された値を保持する
static変数は、初期化された値を保持し続けます。
関数内で宣言されたstatic変数
は、初期化が一度だけ行われ、その後も値が保持されます。
プログラム全体で利用可能
static変数は、そのスコープ内でのみアクセス可能ですが、そのスコープ内の関数やブロックからは何度でもアクセスすることができます。
これにより、関数間でデータを共有するために使用することができます。
ローカル変数としての利用
static変数は、関数内でのみ有効なローカル変数としても利用することができます。
関数内で宣言されたstatic変数
は、その関数が呼び出されるたびに初期化されるのではなく、値を保持しながら関数内で利用することができます。
static付きのグローバル変数の使い方
C言語では、グローバル変数として宣言された変数は、通常、プログラム全体で共有されます。
しかし、static修飾子を付けることで、その変数をファイルスコープに制限することができます。
static付きのグローバル変数は、以下のように宣言されます。
static int globalVariable;
このように宣言された変数は、他のファイルからはアクセスできません。
つまり、その変数は宣言されたファイル内でのみ使用することができます。
static付きのグローバル変数の利点は、変数のスコープを制限することで、プログラムの他の部分からの意図しない変更を防ぐことができる点です。
また、グローバル変数の使用を最小限に抑えることで、プログラムの保守性を向上させることもできます。
以下に、static付きのグローバル変数の使用例を示します。
#include <stdio.h>
static int globalVariable = 10;
void function1()
{
printf("globalVariable in function1: %d\n", globalVariable);
}
void function2()
{
printf("globalVariable in function2: %d\n", globalVariable);
}
int main()
{
function1();
function2();
return 0;
}
上記のコードでは、globalVariable
というstatic付きのグローバル変数を宣言しています。
function1
とfunction2
では、それぞれglobalVariable
の値を表示しています。
実行結果は以下のようになります。
globalVariable in function1: 10
globalVariable in function2: 10
このように、static付きのグローバル変数は、宣言されたファイル内でのみ使用され、他のファイルからのアクセスが制限されます。
これにより、プログラムの保守性を高めることができます。