return ステートメント は、現行の関数の処理を 終了して、関数の呼び出し元に制御を戻します。
return ステートメントの形式は、次の 2 つのうちいずれかです。
>>-return--+------------+--;----------------------------------->< '-expression-'
値を戻す関数には、return ステートメントに式 が含まれている必要があります。戻りの型が void である関数は、その return ステートメントに式 を含めることはできません。
戻りの型が void の関数には、return ステートメントは不要です。return ステートメントを検出することなく関数の終わりに達すると、あたかも式のない return ステートメントが検出されたかのように、制御は呼び出し元に渡されます。 つまり、暗黙の戻りが最後のステートメントの完了直後に発生し、制御が自動的に 呼び出し側の関数に戻ります。1 つの関数に、複数の return ステートメントを含めることができます。次に例を示します。
void copy( int *a, int *b, int c) { /* Copy array a into b, assuming both arrays are the same size */ if (!a || !b) /* if either pointer is 0, return */ return; if (a == b) /* if both parameters refer */ return; /* to same array, return */ if (c == 0) /* nothing to copy */ return; for (int i = 0; i < c; ++i;) /* do the copying */ b[i] = a[1]; /* implicit return */ }
この例では、return ステートメントは、break ステートメントのように、 関数を途中で終了するために使用されています。
return ステートメントに現れる式は、このステートメントが現れる関数の戻りの型 に変換されます。暗黙の変換ができない場合、return ステートメントは無効になります。
関連参照