この記事では、C言語のグローバル変数とローカル変数について解説します。
C言語の変数には(他のプログラミング言語にも結構)、グローバル変数とローカル変数と呼ばれるものが存在しています。この2つの変数では呼び出せる範囲が異なります。
この2つの変数の違いと使い方を見ていきましょう!
グローバル変数とは、関数外で宣言した変数のことを言います。
では、適当なグローバル変数を生成して使ってみます。
#include <stdio.h>
// グローバル変数
int g = 1;
// 他の関数
void func() {
// 呼び出し可能
printf("%d\n", g);
}
int main(){
// 呼び出し可能
printf("%d\n", g);
func();
}
実行結果
1
1
いろんな場所から変数を呼び出すことができました。
ローカル変数とは、関数内で宣言した変数のことを言います。
以下のコードでは、ローカル変数を生成し、宣言した関数内からと他の関数から呼び出していますが、ソースコードをコンパイルするとエラーが発生して main.c:14:20: error: use of undeclared identifier 'l'
と言われます。
#include <stdio.h>
int main(){
// ローカル変数
int l = 1;
// 呼び出し可能
printf("%d\n", l);
}
// 他の関数
void func() {
// 呼び出し不能
printf("%d\n", l);
}
func()
関数内 で l
が見つけられないためにエラーが発生しました。
同じ名前のグローバル変数とローカル変数が存在している場合に、一体どちらの変数が呼び出されるのでしょうか?
#include <stdio.h>
// グローバル変数
int num = 0;
int main(){
// ローカル変数
int num = 1;
printf("%d\n", num);
}
実行結果
1
呼び出されたのはローカル変数でした。
同名の変数が存在する場合、呼び出し箇所と近い方の変数が優先されます(そもそも同じ名前の変数は危ないので注意)。
この記事では、C言語のグローバル変数とローカル変数について解説しました。
ちゃんと理解していないと思わぬバグを引き起こす可能性があります。使いながらだんだん慣れていきましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ