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

削除された内容 追加された内容
このため、「return a;」のような返却値についても、ある関数内で変数が計算結果でa=6となった場合に、関数終了の返却値で「return a;」によって、aの数値を呼び出しもとの関数に返却しても
なお、「return a;」などのように戻り値をつかって 計算結果の数値を 呼び出しもとの関数に送信したりする方法は、じつは、あまり実用的ではなく、現実には不便な場合が多いのである。な
99 行
いっぽう、ベーシックでいうサブルーチンは、けっして一国一城の主ではなく、全員、部下です、手下です、サラリーマンです。では、ベーシックの「サブルーチン」は誰の配下かというと、「行番号」さん の手下です。ベーシックのサブルーチンは行番号さんの手下ですので、けっして独立して変数アドレスを持つ事は許されず、そのため、変数のアドレスはべーシックのそのプログラム全体で共有することになるので、そもそも「ローカル変数」というシステムが、ベーシックには無いのです。
 
 
こおように、C言語の(ユーザーが自分で定義する)「関数」は、かなり特殊なシステムである。そのため、「ポインタ」という機能をつかわないと、あまり価値のある作業が、関数では、できない場合が多い。
 
C言語の入門書に書いてあるプログラムで、ポインタを使わなくても利用できる(ユーザー定義)関数は、むしろ珍しいプログラムなのである。画面に文字などを表示するだけなら、ポインタを使わなくても、そのようなアルゴリズムを構築できるので、そのようなプログラムがC言語の入門書の『関数』の章に書かれるのであろう。
 
なお、「return a;」などのように戻り値をつかって 計算結果の数値を 呼び出しもとの関数に送信したりする方法は、じつは、あまり実用的ではなく、現実には不便な場合が多いのである。なぜなら、
:まず、呼び出しもとの どの変数に値を送るかを、呼び出し先のreturnからは指定できないし、(けっして、呼び出しもとの変数aに、数値を代入してくれるわけではない)
:しかも、その関数が終了してしまうので、ほかにも処理をその関数で続行したい場合に不便であるし、
:しかも、1つの数値しか送れないし、
など、いろんな欠点がある。