【C言語】グローバル変数にstaticを付ける意味や使い方を解説

この記事では、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付きのグローバル変数を宣言しています。

function1function2では、それぞれglobalVariableの値を表示しています。

実行結果は以下のようになります。

globalVariable in function1: 10
globalVariable in function2: 10

このように、static付きのグローバル変数は、宣言されたファイル内でのみ使用され、他のファイルからのアクセスが制限されます。

これにより、プログラムの保守性を高めることができます。

目次から探す