2016-02-14 113 views
-4
#include <iostream> 
#include <iomanip> 

using namespace std; 

void getSales(int sales); 

int main() 
{ 
    //declare variables 
    int sales = 0; 
    double commission = 0.0; 

    //enter input 
    getSales(sales); 

    //determine comission 
    if (sales < 0) 
     commission = -1; 
    else if (sales <= 100000) 
     commission = sales * .02; 
    else if (sales <= 400000) 
     commission = (sales - 100000) * .05 + 2000; 
    else 
     commission = (sales - 400000) * .1 + 17000; 

    //display commission error message 
    if (commission != -1) 
    { 
     cout << fixed << setprecision(2); 
     cout << "Comission: $" << commission << endl; 
    } 
    else 
     cout << "The sales cannot be less than 0." << endl; 

    return 0; 
} 

//pass variable by reference 
void getSales(int sales) 
{ 
    cout << "Sales: "; 
    cin >> sales; 
} 

好的,所以我一直試圖瞭解通過值和引用傳遞變量的區別。在這種情況下,我試圖通過一個無效的getSales做一個簡單的通過引用,但我的程序實際上不會在我的算法中調用。所以每次輸入銷售量時都不會用我的算法打印結果。我對傳遞值不是很有經驗,所以任何幫助將不勝感激,所以我知道我在這裏錯過了什麼。通過引用傳遞變量

非常感謝!

+1

你應該看看[The Definitive C++ Book Guide and List](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list),並找到一個初學者的書或教程,因爲這個問題很容易找到,並且有一些很好的解釋來說明差異。 –

+0

http://stackoverflow.com/questions/2564873/how-do-i-use-reference-parameters-in-c – user648026

+0

這是一個非常複雜的方法,試圖找出通過值和傳遞參考之間的區別。你應該簡化你的例子。 – juanchopanza

回答

0

按值調用將參數傳遞給函數的方法將參數的實際值複製到函數的形式參數中。

通過引用調用將參數傳遞給函數的方法將參數的引用複製到形式參數中。在函數內部,引用用於訪問調用中使用的實際參數。

void getSales(int sales) 
{ 
    //call by value function 
} 

void getSales(int &sales) 
{ 
    //call by reference function 
} 
0
//pass variable by reference 
void getSales(int sales) 
{ 
} 

不通過引用但由值傳遞參數

爲了通過參考傳遞使用參考說明符類型:

void getSales(int& sales) 
       //^
{ 
} 
0

通過引用傳遞類似於由指針傳遞(所不同的是引用不能被重新安置),這意味着您調用的函數不會獲取傳入值的副本,而會訪問從調用者作用域傳入的值。 要通過引用傳遞,您必須在您的getSales函數中爲該類型添加符號'&'。現在,您正在通過值傳遞int,而'int &'將通過引用傳遞。就像'int *'會通過指針一樣。

0

我猜你的問題已經回答了,但你爲什麼要返回值的void函數的參數,而不是簡單地聲明

int getSales(); 

我認爲,輸出參數只應作爲最後的手段。他們傾向於使代碼難以閱讀。