「C言語/関数」の版間の差分

削除された内容 追加された内容
編集の要約なし
グローバル変数を使ってもいい証拠として文献『低レベルプログラミング』にあった記述を紹介。
378 行
 
 
:※ 日本では、なぜか勘違い・生半可な理解で「グローバル変数はなるべく一切(いっさい)使わないで、保守性のために外部ファイルからアクセスできないように、ソフトウェア工学のカプセル化の手法を使うほうがイイ」という迷信があります。しかしこれはマチガイ・勘違いであり、証拠として文献『低レベルプログラミング』(Igor Zhirkov 著、古川邦夫 監訳)には、堂々と、カプセル化された部品(文献には「パーツ」とある)的なプログラムを呼び出す方法は「グローバル変数を使う」か「隠されていない一群の関数を使う」と書いてあります<ref>Igor Zhirkov 著、古川邦夫 監訳『低レベルプログラミング』、翔泳社、2018年01月19日 初版 第1刷 発行、310ページ</ref>。考えてみれば当然で、そもそも外部ファイルから何も変数にアクセスできなければ、そもそもプログラムを起動できません。
 
 
さて、ともかく実用では、子サイド(呼び出し先)の関数で、親サイド(呼び出しもと)の変数の値も変更したい場合も多く、その場合には、「グローバル変数としての static 変数」(静的変数)もしくは「ポインタ」という機能をつかう。
 
グローバル領域でのstatic 変数は、その名前の変数は、どこの変数で呼び出されても、かつ共通のアドレスで管理しているので、呼び出した(子サイドの)関数の先で、親サイド(呼び出し元の)関数も書き換えできる機能をもつ。