0

誰かがコーディングするとき、それはどういう意味ですか:

 template <class T>
 void binaryTree<T>::in_order(Node <T>* node, void (*fun)(T&))
{
    if (node == NULL)   
            return;     //<-- what does this mean here

    inorder(node->left, fun);   //<-- how does this continue here
    f(node->data);
    inorder(node->right,fun);
}

問題は、どのように返品するかです。何も返さずに。これは何をしますか?**注: わかりやすくするために、上記のコードを編集しました。

4

7 に答える 7

1

関数から、あなたfoo(y)は実行されないことを意味します。x == 1return

x != 1コードをインデントしてかっこを入れると、コードは次のように続きifます。より明確になります。

void foo(int x, int y) { 
   if(x == 1) {
      return;    //return from the function, don't proceed to foo(y)
   }
   foo(y);   
}

式も波括弧初期化リストもない return ステートメントは、値を返さない関数、つまり戻り値の型が void の関数でのみ使用できます。

Ideone でこのコードを参照してください。

于 2013-10-21T06:24:18.340 に答える
1

より適切にフォーマットすると、見やすくなる可能性があります。

void foo (int x, int y)
{ 
    if (x == 1)
        return;
    foo (y);
}

変数が と等しい場合は、単純に戻ります。が等しくない場合、コードは への再帰呼び出しにスキップします( 2 つ必要なときに 1 つの引数で呼び出しているため、実際のコードはそうではないことを願っています)。x1x1foofoo

于 2013-10-21T06:24:33.440 に答える
1

x == 1 の場合、関数は foo(y) 関数を実行せずに戻り、 x != 1 の場合、foo(y) 関数が実行されます。

于 2013-10-21T06:27:14.310 に答える
0

紛らわしいインデントにもかかわらず、returnは条件文の中にあります。

以下は、そのコードを書くためのやや混乱の少ない方法です。

if (x == 1)
   return;
foo (y);

条件文の中にあり、 のreturn場合にのみ実行されますx == 1。いずれの場合も、foo(y)が呼び出されます。

于 2013-10-21T06:24:42.353 に答える
0

関数の戻り値の型が の場合void、書き込みreturnだけで関数から戻ることができます。の後に値を指定する必要はありませんreturn。戻り値の型がintorcharなどだった場合は、 の後に値を指定する必要がありますreturn

于 2013-10-21T06:49:53.140 に答える
0

コードの最後に慣れている場合はreturn、コードを次のように書き直すことができます。

void foo( int x, int y )
{
    if( x != 1 )
    {
        foo( y ) ;
    }
    else /* You can keep it to understand better visually. 
            Even if you don't keep it, the code would do the same */
    {
        return ; 
        /* returns the control to the caller code. 
           Make sure you understand that, it just returns the control but 
           without any value i.e., returning void. */
    }
}

EDIT::returnコントロールを呼び出し元に返すだけです。コントロールに何らかの値を返しreturn variable_nameたい場合は、何も返したくない場合はreturn.

実際の例:: お風呂用の石鹸を買うように頼まれたとします。今、石鹸が店にあれば、あなたは戻ってきて石鹸を私に返し、発信者は風呂に行きます。これは、何らかの値で呼び出し元に戻っているということです。でももし店の石鹸がなくなったら、あなたはただ私のところに戻ってきて、私は石鹸なしで風呂に入るでしょう。これは、呼び出し元に戻りますが、値がありません。どちらの場合も、発信者はあなたが戻ってきたときにのみ入浴をさらに進めるのを待っているため、発信者に戻ります.

于 2013-10-21T06:40:04.630 に答える