C言語の「extern」キーワードとは?外部変数の基本と使い方を解説
externキーワードとは
外部変数は「グローバル変数」とも呼ばれ、関数の外側で定義される変数のことです。外部変数はプログラム全体からアクセスでき、実行中のどの関数からでも参照したり、値を書き換えたりすることが可能です。「extern」キーワードは、こうした外部変数や関数を宣言・定義し、その可視範囲を広げるために使用されます。
外部変数の基本特性
スコープ:特定の関数に束縛されず、プログラム全体(グローバル)で有効です。
デフォルト値:明示的に初期化しない場合、グローバル変数は自動的に0で初期化されます。
生存期間:プログラムの実行が終了するまでメモリ上に保持されます。
C言語のexternキーワードに関する重要なポイント
外部変数は何度でも宣言できますが、定義できるのは1回だけです。
「extern」キーワードは、関数や変数の可視範囲(スコープ)を拡張する目的で使用されます。
関数はデフォルトでプログラム全体から参照可能なため、extern付きの関数宣言・定義は不要です。付けても冗長になるだけです。
「extern」キーワードを付けた変数宣言は、定義ではなく宣言のみを表します。
extern変数を初期化した場合、それは定義として扱われます。
サンプルコード
C言語におけるextern変数の使用例を以下に示します。
#include <stdio.h>
extern int x = 32;
int b = 8;
int main() {
auto int a = 28;
extern int b;
printf("The value of auto variable : %d\n", a);
printf("The value of extern variables x and b : %d,%d\n",x,b);
x = 15;
printf("The value of modified extern variable x : %d\n",x);
return 0;
}実行結果
The value of auto variable : 28 The value of extern variables x and b : 32,8 The value of modified extern variable x : 15
コードの解説
この例では、auto int a = 28;によってmain関数内にローカルな自動変数aを定義しています。extern int b;は、ファイル先頭で定義済みのグローバル変数bを再宣言しているだけであり、新たなメモリ領域は確保されません。
また、extern int x = 32;のようにextern付きで初期化を行うと、その宣言は定義として扱われる点に注意が必要です。最後に、関数内からグローバル変数xの値を15に書き換え、変更がプログラム全体に反映されていることを確認しています。
-
C#のabstractキーワード徹底解説!抽象クラスの基本と実装例
C#のabstractキーワードとは C#におけるabstractキーワードは、抽象クラスや抽象メンバーを定義するために使用される修飾子です。抽象クラスには、実装を持たない抽象メソッドと、通常の実装を持つ非抽象メソッドの両方を含めることができます。 重要なポイントとして、抽象クラスは直接インスタンス化できません。そのため、抽象クラスを利用するには、必ず派生クラスを作成し、そこで抽象メンバーを実装する必要があります。 抽象クラスの定義例 以下は、抽象クラス「Vehicle」と抽象メソッド「display()」を定義した例です。 public abstract class Vehicle {
-
C#の「this」キーワードとは?基本の使い方と実例をわかりやすく解説
C#における「this」キーワードは、クラスの現在のインスタンス(自分自身)を参照するために使用されます。特に、メソッドのパラメータ名とクラスのフィールド名が同じ場合に、両者を明確に区別したいときに役立ちます。また、「this」キーワードにはもう一つ重要な用途があります。それは、同じクラス内のあるコンストラクタから別のコンストラクタを呼び出すという使い方です。thisキーワードの基本的な使い方ここでは、学生の情報(ID、名前、年齢、科目)を管理する例を通して、「this」キーワードの役割を見ていきましょう。コンストラクタ内で現在のクラスのフィールドを参照するために、次のように「this」を使用