さて、グローバル変数と同じ名前の変数を、関数の中で宣言してもエラーにはならない。
この場合、ローカル変数が優先される。
プログラムで確認してみよう。
なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.91.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0でコンパイルしている。
//ローカル変数
#include <stdio.h>
int a = 10;
void func(void)
{
printf("%d\n",a);
int a = 0;
a++;
printf("%d\n",a);
}
int main(void)
{
func();
printf("%d\n",a);
return 0;
}
実行結果
10
1
10
実行結果の1行目は、グローバル変数aの値である。
2行目は、func関数内のローカル変数の値である。
3行目はグローバル変数の値である。
ただし、このようなプログラムコードは混乱のもとになるので、グローバル変数とローカル変数には異なる名前をつけるようにする。
(参考)「C言語 新版 ゼロからはじめるプログラミング」 三谷 純 (著) 翔泳社
コメント