プログラム言語 II TOP

関数 まとめと補足



関数定義(function definition)

 返却値の型 関数名 (仮引数の並び)
 {
   局所変数の宣言

   関数本体
 }



関数原型(function prototype,教科書p.87)

これは,コンパイラが関数呼出しを処理する際に必要な情報
 関数名
 返却値の型
 引数の型
を与えるものです。

もし,ある関数 a を呼び出すより前に,関数 a が定義されている場合は,既にコンパイラが関数 a を処理済みなので,関数原型は必要ありません。

  

もちろん,関数 main の中で,関数 a の関数原型を宣言してもかまいません。

  

関数原型の引数には型だけでなく,次のように仮引数も明示することができます(例題6.3)。

  

関数原型での仮引数名(i と j)と関数定義での仮引数名(x と y)は一致する必要はありません。


関数原型を忘れるとどうなるのでしょうか?

  

この場合は,何の問題もなく処理され,正しく実行されます。しかし,

  

では,エラーとなります。関数原型がない関数の呼出しを処理するとき,コンパイラは返却値や引数の型を整数と見なすためです。



引数と外部変数
(1) 関数は,それを呼ぶ側から引数によりデータを受け取ることができます。また,関数の結果を返却値として呼ぶ側に返すことができます。

 


引数や返却値の代わりに,外部変数を使っても同様なことができます。

 


(2) 今までのところ,返却値は値一つです。そのため,関数の結果として,複数のデータを呼ぶ側に返すことはできません(あくまでも,今のところです)。

しかし,複数の外部変数を使えば,関数の結果として,複数のデータを呼ぶ側に返すことができます

演習 関数(2)の演習問題を,結果を表示するのではなく,呼ぶ側に返すようにする。


(3) この点で外部変数の方が使いやすいように思うかも知れません。

しかし,外部変数を使うときには,外部変数の名前と局所変数の名前が同じにならないようにしなければなりません。

つまり,変数の名前に注意して,プログラミングしなければならなくなり,"自由度"が少し下がります。

 


プログラム言語 II TOP