2016-08-02 6 views
3

これは理論的な質問です。関数の終わりにあるreturn文をどのように操作できるかをさらに理解する。"0"または "変数"ではなく関数に戻ります

は、我々は次のように行うことができます。

int intialize1() 
{ 
    ...do smth; 
    ...do smth; 

    return initialize2(); 
} 

他のCファイル内

int initialize2() 
{ 
    ...do other thing; 
    ...do other thing; 

    return 0; 
} 

これは次のように行うための適切な方法ですか?あなたが書いた何

+0

構文が正しい場合は、yesです。私。これらのメソッドは、返されると返すものを返します。だから 'initialize1()'は 'int initialize1()'と 'initialize2()'は 'int initialize2()'になります。 –

+0

明示的な戻り値の型を持たない関数定義は、デフォルトではC90以前では 'int'を返しますが、C99以降では不正です。故意に古い書式を使用しましたか?また、あなたがしようとしていることだけをあなたの質問から完全にはっきりさせることはできません。 –

+0

はいこれが正しいです。このパターンには通常、プログラマーが続かれます。 – RajSharma

答えて

3

は、完全に正しい頻繁に行われ、機能的に同等である:

int initialize1() 
{ 
    ...do smth; 
    ...do smth; 

    int x_value;    // Create a place to store the return value 
    x_value = initialize2(); // Get the result of the function, and store it. 
    return x_value;   // Return the stored value. 
} 
+0

素晴らしい!代わりの同等の提案は、リターン・ステートメントの使用法についてより多くの洞察を与えるのに役立ちます。 – danteDev

2

return文、 から機能を呼び出すことが完全に合法ですが、あなたがいることを確認する必要があり、両方の機能の戻り値の型一貫性があり、 データの切り捨てまたは意味的に間違った暗黙の変換はありません。

+0

ありがとう@dolphinden、私は今この方法を使うことに自信があります。私は戻り値の型を修正しました。 – danteDev

関連する問題