サイトマップ / 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言語講座−それ自体コンパイルできる教材を使った講座です−

青い直線

サイトマップ / C言語講座出入り口総目次目次:関数>関数の戻り値