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

削除された内容 追加された内容
→‎構造体を使う方法: しかし、関数の返却値は、エラー判別などに利用される場合も多いので、上述の手法は、あまりオススメできない。
編集の要約なし
125 行
 
 
「static」 (スタティック、静か)という名称からは想像しづらいが、staticで宣言された変数は、呼び出し先の各関数ブロック内で「共有」され、さらに、呼び出し先の各関数ブロックによる変数値の「書き換えが可能」なのである。変数のアドレスが共有された結果、書き込み場所が1つ(その書き込み先の場所は、宣言した関数ブロックにある)しかないので、自動的に、呼び出し先の各関数ブロックで計算した内容が、宣言場所の変数にも代入されてしまうわけである。
C言語の入門書での「関数」の章の前半に書いてあるプログラムで、static変数やポインタを使わなくても利用できる(ユーザー定義)関数は、むしろ珍しいプログラムなのである。画面に文字などを表示するだけなら、ポインタを使わなくても、そのようなアルゴリズムを構築できるので、そのようなプログラムがC言語の入門書の『関数』の章に書かれるのであろう。
 
もし、「共有変数」とか「呼び出し先関数からでも書き換え可能な変数」とか、そういう名前がついていたら分かりやすいが、残念ながら歴史的な理由により、「静的変数」という名前がついてしまった。
 
 
さて、C言語の入門書での「関数」の章の前半に書いてあるプログラムで、static変数やポインタを使わなくても利用できる(ユーザー定義)関数は、むしろ珍しいプログラムなのである。画面に文字などを表示するだけなら、ポインタを使わなくても、そのようなアルゴリズムを構築できるので、そのようなプログラムがC言語の入門書の『関数』の章に書かれるのであろう。
 
なお、「return a;」などのように戻り値をつかって 計算結果の数値を 呼び出しもとの関数に送信したりする方法は、じつは、あまり実用的ではなく、現実には不便な場合が多いのである。