次の方法で共有


戻り値の型

関数の戻り値の型は関数によって返される値の型とサイズを設定し次のような構文の型指定子に対応しています :

構文

  • 関数の定義 :
    宣言指定子の opt 属性 seqopt 宣言子リストの 複合ステートメント opt の宣言

    seq 属性 は /* */Microsoft 仕様です。

  • 宣言指定子 :
    ストレージ クラス指定子の宣言指定子 opt

    型指定子の宣言指定子 opt

    宣言型修飾子の指定子 opt

  • 型指定子 :
    void

    char

    short

    int

    long

    float

    double

    Signed

    署名されていません

    構造体または共用体指定子

    列挙指定子

    型定義名

型指定子 基本クラス構造体または共用体の型を指定できます。 型指定子 がない場合戻り値の型 int と見なされます。

関数定義で指定された戻り値の型はプログラムで関数の宣言の戻り値の型の他の場所に一致する必要があります。return のステートメントで式を実行したときに関数の戻り値。式は戻り値の型に評価され必要に応じて変換され関数が呼び出された時点に戻ります。関数の戻り値の型 void いる場合はこれらのステートメントは式警告が生成され式は評価されません。

次の例では関数の戻り値について説明します。

typedef struct  
{
    char name[20];
    int id;
    long class;
} STUDENT;

/* Return type is STUDENT: */

STUDENT sortstu( STUDENT a, STUDENT b )
{
    return ( (a.id < b.id) ? a : b );
}

この例では typedef の宣言を含む STUDENT の型を定義しSTUDENT の戻り値の型を持つように関数 sortstu を定義します。関数は 2 個の構造体引数の 1 つがを選択して返します。関数への後続の呼び出しで引数の型をコンパイラが確認のチェック STUDENT です。

[!メモ]

効率は構造体全体にではなく構造体へのポインターを渡すことによって強化されています。

char *smallstr( char s1[], char s2[] )
{
    int i;

    i = 0;
    while ( s1[i] != '\0' && s2[i] != '\0' )
        i++;
    if ( s1[i] == '\0' )
        return ( s1 );
    else
        return ( s2 );
}

この例では文字の配列へのポインターを返す関数を定義します。関数は 2 文字列の短いの引数と戻りとして 2 文字の配列 (文字列) ポインターを受け取ります。配列の要素のうち最初の配列へのポインターへのポインターの型は; したがって関数の戻り値の型は char を入力するポインターです。

引数と戻り値をチェックする正しい型を有効にするようにプロトタイプをお勧めしますがメソッドを呼び出す前に int の戻り値の型で関数を宣言する必要はありません。

参照

関連項目

C 関数の定義