- ローカル変数と呼ばれる関数またはブロックの内部。
- グローバル変数と呼ばれるすべての関数の外側。
- 形式パラメータと呼ばれる関数パラメータの定義において。
- ローカル変数とグローバル変数、および仮パラメータについて理解してみましょう。
ローカル変数
関数またはブロック内で宣言された変数はローカル変数と呼ばれます。 それらは、その関数またはコードブロックの内部にあるステートメントによってのみ使用できます。 ローカル変数は、それ自身の外で機能することは知られていません。 次の例は、ローカル変数の使用方法を示しています。 ここでは、すべての変数a、b、およびcはmain()関数に対してローカルです。
#include <stdio.h> int main () { /* local variable declaration */ int a, b; int c; /* actual initialization */ a = 10; b = 20; c = a + b; printf ("value of a = %d, b = %d and c = %d\n", a, b, c); return 0; }
グローバル変数
大域変数は関数の外側で定義され、通常はプログラムの上に定義されます。 グローバル変数は、プログラムの存続期間を通じてその値を保持し、プログラムに定義されている関数のいずれかでアクセスできます。
グローバル変数には、どの関数でもアクセスできます。 つまり、グローバル変数は、宣言後にプログラム全体で使用できるようになります。 次のプログラムは、グローバル変数がプログラムでどのように使用されるかを示しています。
#include <stdio.h> /* global variable declaration */ int g; int main () { /* local variable declaration */ int a, b; /* actual initialization */ a = 10; b = 20; g = a + b; printf ("value of a = %d, b = %d and g = %d\n", a, b, g); return 0; }プログラムはローカル変数とグローバル変数に同じ名前を付けることができますが、関数内のローカル変数の値が優先されます。 ここに例があります
#include <stdio.h> /* global variable declaration */ int g = 20; int main () { /* local variable declaration */ int g = 10; printf ("value of g = %d\n", g); return 0; }上記のコードをコンパイルして実行すると、次の結果が生成されます
value of g = 10
形式的なパラメータ
形式的なパラメータは、関数内の-lでローカル変数として扱われ、グローバル変数よりも優先されます。 以下は例です
#include <stdio.h> /* global variable declaration */ int a = 20; int main () { /* local variable declaration in main function */ int a = 10; int b = 20; int c = 0; printf ("value of a in main() = %d\n", a); c = sum( a, b); printf ("value of c in main() = %d\n", c); return 0; } /* function to add two integers */ int sum(int a, int b) { printf ("value of a in sum() = %d\n", a); printf ("value of b in sum() = %d\n", b); return a + b; }
上記のコードをコンパイルして実行すると、次の結果が生成されます
value of a in main() = 10 value of a in sum() = 10 value of b in sum() = 20 value of c in main() = 30
ローカル変数とグローバル変数の初期化
ローカル変数が定義されている場合、ローカル変数はシステムによって初期化されていないので、自分で初期化する必要があります。 グローバル変数は、以下のように定義すると、システムによって自動的に初期化されます
Data Type | Initial Default Value |
---|---|
int | 0 |
char | '\0' |
float | 0 |
double | 0 |
pointer | NULL |
No comments:
Post a Comment