【C言語】staticとexternの違いや使い方を解説

staticは変数や関数を限定的な範囲で使用するためのキーワードであり、externは他のファイルから変数や関数を共有するためのキーワードです。

この記事では、C言語におけるstaticとexternの違いや使い方について解説します。

目次から探す

staticとexternの違い

C言語において、staticとexternは変数や関数の宣言に使用されるキーワードです。

それぞれのキーワードの違いについて見ていきましょう。

ストレージクラスの違い

static

staticキーワードを使用して宣言された変数や関数は、静的なストレージクラスを持ちます。

これは、プログラムが実行される間、メモリ上に一度だけ割り当てられ、その値が保持されることを意味します。

また、関数内で宣言されたstatic変数は、関数が呼び出されるたびに初期化されることはありません。

extern

externキーワードを使用して宣言された変数や関数は、外部リンケージを持ちます。

これは、他のファイルからアクセス可能であることを意味します。

externキーワードを使用して宣言された変数は、実際の定義が別のファイルにある場合でも、その変数を使用することができます。

スコープの違い

static

staticキーワードを使用して宣言された変数や関数は、そのスコープが限定されます。

関数内で宣言されたstatic変数は、その関数内でのみ使用することができます。

また、static関数は、そのファイル内でのみ呼び出すことができます。

extern

externキーワードを使用して宣言された変数や関数は、そのスコープが広範囲です。

externキーワードを使用して宣言された変数は、他のファイルからもアクセスすることができます。

また、extern関数は、他のファイルから呼び出すことができます。

リンケージの違い

static

staticキーワードを使用して宣言された変数や関数は、内部リンケージを持ちます。

これは、同じファイル内の他の関数からのみアクセス可能であることを意味します。

他のファイルからはアクセスすることができません。

extern

externキーワードを使用して宣言された変数や関数は、外部リンケージを持ちます。

これは、他のファイルからアクセス可能であることを意味します。

他のファイルからもアクセスすることができます。

staticとexternの使い分けのポイント

staticとexternの使い分けには、以下のポイントがあります。

ファイル内での変数や関数の共有

static

同じファイル内でのみ使用する変数や関数を宣言する場合に使用します。

他のファイルからはアクセスできないため、変数や関数の名前の衝突を防ぐことができます。

extern

同じファイル内で宣言された変数や関数を他のファイルからも使用する場合に使用します。

他のファイルからアクセスするため、変数や関数を共有することができます。

ファイル間での変数や関数の共有

static

staticキーワードを使用して宣言された変数や関数は、他のファイルからはアクセスできません。

そのため、他のファイルとの間で変数や関数を共有することはできません。

extern

externキーワードを使用して宣言された変数や関数は、他のファイルからもアクセスすることができます。

そのため、他のファイルとの間で変数や関数を共有することができます。

1 2
目次から探す