基本的に変数は、if文や、for文、関数などブロック("{"と"}")で囲まれた範囲(これをスコープという)でのみ有効であり、
外からそこにアクセスすることはできないし、そのブロックを抜けると値も保持される保証は無い・・・。
グローバル変数は、そのモジュール内ならどこでも参照、代入が可能で値も保持される変数である・・・。
グローバル変数に関数からアクセスするので、global_variable_access_funcという関数を宣言・・・。
グローバル変数global_variable自体は、このようにmain関数の前に変数を宣言するだけ・・・。
実際にmainで行う処理は、
まず、global_variableに10を代入・・・。
global_variableの値を出力・・・。まあ、当然10なわけだが・・・。
次にglobal_variable_access_funcを呼ぶ・・・。
最終的なglobal_variableを出力・・・。
で、global_variable_access_funcは何をやってるかというと、
この関数の中からglobal_variableを参照してその値を出力・・・。
そのあとglobal_variableに20を代入・・・。
これを実行すると、
$ ./global_variable global_variable = 10 global_variable(in global_variable_access_func) = 10 global_variable = 20 $
となる・・・。
main関数内でglobal_variableに10を代入されたこと・・・。
global_variable_access_func関数内でglobal_variableの値( = 10)を参照し、出力していること・・・。
そして、そのあとglobal_variableに20を代入し、main関数で最終的なglobal_variableを出力したら、global_variableの値として20が出力されたこと・・・。
これでglobal_variableがどこでも参照、代入可能なグローバル変数になってるのがわかる・・・。
Sample/global_variable.c at master · bg1bgst333/Sample · GitHub