簡體   English   中英

返回; 只有沒有返回值

[英]return; only with no return value

有人編碼時是什么意思:

 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);
}

問題是你如何得到回報? 沒有返回任何東西。 這是做什么的? **注意,為清楚起見,我已經編輯了上面的代碼。

這意味着從函數return x == 1時不執行foo(y)

如果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上查看此代碼

如果格式化得更好,可能會更容易看到:

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

如果變量x等於1它將簡單地返回。 如果x 等於1那么代碼將跳到對foo的遞歸調用(我真的希望真實的代碼不是那樣,因為您在需要兩個參數的情況下使用一個參數調用foo )。

這意味着如果x == 1,那么該函數將返回而不執行foo(y)函數;如果x!= 1,則將執行foo(y)函數。

foo是一個函數。

foo需要2個參數。 這兩個參數都是integer 參數分別命名為xy

函數主體測試x變量中存儲的值是否等於1。如果x存儲的值等於1,則函數將返回(退出)。 如果x存儲的值不等於1,則該函數調用foo(int x)

在函數內部調用的foo可能與您為其提供代碼的foo函數有所不同(因為它具有不同的接口/原型)。

第二個foo (帶有單個參數的那個)的主體是什么? foo的原型有可能為參數x&y指定默認值(如果是這種情況,那么這可能是唯一的foo函數。

盡管縮進令人困惑,但return值仍在條件語句中。

以下是編寫該代碼的一種不太混亂的方法:

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

在條件語句中,只有在x == 1時才執行return 在所有情況下,都會調用foo(y)

如果你見慣了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. */
    }
}

編輯:: return只是將控件返回給調用者。 如果要返回某個值的控件,則將return variable_name ;如果您不想返回任何內容,則只需return

現實生活中的示例::假設您被要求購買一些肥皂洗澡。 現在,如果商店里有肥皂,您會回來將肥皂歸還給我,來電者會去洗澡。 這是您將返回給調用者一些值。 但是假設,如果商店里沒有肥皂,那么您只需回到我這里,我將不用任何肥皂去洗澡。 這是您返回到調用方,但沒有值。 在這兩種情況下,您都將返回到呼叫方,因為呼叫方僅在返回時才等待進一步沐浴。

當函數返回類型為void ,可以通過僅編寫return來從函數return return后無需給出任何價值。 如果返回類型是intchar等,則必須在return之后給出一個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM