2015-02-23 191 views
0

我正在嘗試爲學校和我的老師/同伴出於某種原因而不喜歡使用指針的胡扯遊戲。通過指針將函數的返回值傳遞給另一個函數C

我有以下代碼:

double get_wager_amount (void) { 

    double wager; 

    printf("How much would you like to wager?\n"); 
    scanf(" %f", &wager); 

    return wager; 
} 

,並希望押注變量返回到該驗證基於關閉在用戶的銀行賬戶金額的投注數額另一個函數。

類似於下面的代碼,但這顯然不起作用,因爲它重新打印了上面的賭注和銀行賬戶功能中的所有內容。

int check_wager_amount (int *wager, int *account_balance)) { 
    double wager = 0, balance= 0; 

    if (wager <= get_wager_amount()) 
    { 
     return 1; 
    } if (balance <= get_bank_balance()) 
    { 
     return 0; 
    } else 
    { 
     printf("You either have no money or the program is not functioning correctly"); 
    } 
} 

有人可以請解釋如何通過指針或引用將函數的返回值傳遞給其他函數嗎?我找不到有關如何在C中執行此操作的任何信息。謝謝。

+2

你爲什麼要傳遞一個指針? – juanchopanza 2015-02-23 22:43:12

+1

'double'的scanf說明符是'%lf' – 2015-02-23 22:43:53

+2

將'wager'作爲'int * wager'的函數參數使用後,立即將'wager'重新聲明爲'double',並且永遠不會使用'account_balance'。 – wolfPack88 2015-02-23 22:44:42

回答

0

你想要這個嗎?

check_wager_amount(&get_wager_amount()); // This should work, I guess 

我不知道這是不正確的使用,但萬一上面產生一個錯誤(相當新的C我自己),你總是可以只使用

double wager = get_wager_amount(); // Store the variable somewhere 
check_wager_amount(&wager); // Reference the variable 

我也注意到,你的代碼無效。你要求下注作爲一個整數,但後來宣佈它是一個雙。一個指針是一個int,但是你應該使用一個double *(不是一個int,並且肯定不是一個int *)來存儲你的指針。

+4

不,您的第一行代碼將不起作用。函數返回的值不是一個對象,您不能獲取它的地址。實際上'&get_wager_amount()'是合法的;它與'get_wager_amount()'相當(由於涉及函數地址的一些模糊的語義)。 – 2015-02-23 22:51:49

+0

我仍然感到困惑。我試圖將函數檢查下注的返回值轉換爲函數檢查下注,而不必將函數設置爲一個變量並以此方式調用它。 C中沒有辦法傳遞或引用從函數到函數的指針或從函數到函數繼承變量? – ntdog22 2015-02-23 23:51:44

+0

@ ntdog22然後你需要聲明這個函數爲'void get_wager_amount(double&wager)'。看看[這個](http://pages.cs.wisc.edu/~cs368-2/CppTutorial/NOTES/PARAMS.html) – Dan 2015-02-24 00:26:20

相關問題