関数の呼び出し
○関数の呼び出し
関数名(実パラメタのリスト)
・関数名の後の ( ) は、実パラメタがなくても必ず必要である。
・「実パラメタのリスト」は、各々の実パラメタをカンマ(comma)「 ,」
で区切ったものである。
・個々の実パラメタは式である。
例1: sin(theta), atan2(y, x)
・値を返す関数は、式の要素の一部として使われることが多い
例2: x = r * cos(theta);
・値を返さない関数(他の言語のサブルーチンに当たる)は、
単独で文として使われることが多い
例3:
sayhello( )
{
printf("Hello\n");
}
main( )
{
sayhello( );
}
・値を返す関数が単独で使われた場合、返してきた値は単に無視する。
(当然他にも何らかの作用がある)
例4:
printf("x=%f\n", x);
/* 結果として出力した文字数を返すがほとんどの場合無視する。*/
○関数の呼び出しの仕組
1.実パラメタがある場合は、各実パラメタの型に合わせて臨時の記憶場所が
確保され、各々の値が計算されてその記憶場所に格納される。
2.はじめに、局所変数の場所が確保され、関数のブロックが実行される。
・ブロックの中で、仮パラメタを扱う部分は、臨時記憶の中の対応箇所が
対象となる
・戻る方法1
return 式;
が実行されると、式の値を関数値として、呼び出した部分に戻る。
・戻る方法2
式のない
return;
が実行されるた場合は、呼び出した部分に戻るが、値は「不定」である。
・戻る方法3
return が実行されずにブロックの実行が終了した場合は、戻る方法2と同じ
3. 実パラメタのための、臨時の記憶場所が開放される。
このように、実パラメタは、臨時の記憶場所にコピーされて関数に渡されるので、
関数中で、変更しても、呼び出した方の実パラメタそのものの値は変化しない。
<