サイトマップ / C言語講座>出入り口>総目次>目次:関数>関数の戻り値
[色々なデータ型の最大値、最小値]←このソース→[srand( )とrand( )]
/* 関数の戻り値(return value)について学びます。ある関数が別の関数を呼び出して、呼び出した関数に制御が戻って来た時に、関数によっては値が返ってくるものがあります。
例 | 戻 り 値 |
char func1( ); | char型の整数 |
int func2( ); | int型の整数 |
long func3( ); | long型の整数 |
void func4( ); | 無し |
long型のデータを受け取って、その絶対値を返す関数の例を示します。
unsigned long GetLongAbs(long n) { if(n < 0) // n が負なら return (- n); // -n を返す else // そうでなければ return (n); // n を返す }
1行目のunsigned longが、この関数の戻り値は符号なしの(正の)long型の整数であることを示しています。GetLongAbsが関数の名前です。
重要:どういうことをする関数か自然に連想できるような名前にします。
関数の名前の一部に動詞を使うことが勧められています。関数の名前に日本語を使うことは許されていません。
( )の中のlong nは、この関数の引数がlong型の整数であることを示しています。
3から6行目が関数の本体です。4行目と6行目のreturn ( )は、ここでこの関数を呼び出した側に制御を移す(戻る)ことを意味し、カッコの中の値が戻り値です。
では、ソースプログラムを見てみましょう。GetMean( )という非常に短い関数があります。2つのint型の整数を引数に取り、その平均を戻り値として返します。
戻り値の型もint型の整数なので、もし割り切れない時は小数点以下の値は切り捨てられます。
このような短い関数を作ることに何か意味があるのでしょうか。複雑なプログラムを書く時にソースコードが見やすくなります。
scanf( )の2つの引数に、&が付いています。メイン関数がint型の変数 x と y をメモリ上に用意し、そのアドレスをscanf( )に渡しています。&xはメモリ上の x の存在するアドレスです。scanf( )はキーボードから入力された値を、そのアドレスに書き込みます。
プログラムを実行する際には、キーボードからは、半角スペースで区切った、2つの数字を入力して下さい。 */
#include <stdio.h> int GetMean(int x, int y); /* プロトタイプ宣言 */ void main(void); /* 二つの整数の平均を返す */ int GetMean(int x, int y) /* int 型を返すので */ { /* 割り切れない時は */ return ((x + y) / 2); /* 小数点以下は捨てられる */ } void main(void) { int x, y; printf("二つの整数をスペースで区切って入力して下さい。\t"); scanf ("%d%d", &x, &y); /* 何が表示されるかは実行して確かめて下さい */ printf("\n(%d + %d) / 2 = %d\n", x, y, GetMean(x, y)); } |
/* 今回は、printf( )もscanf( )も戻り値を使っていません。 */
[色々なデータ型の最大値、最小値]←このソース→[srand( )とrand( )]
/* (C) 2000- YFプロ. All Rights Reserved. */ 提供:C言語講座−それ自体コンパイルできる教材を使った講座です−