2014-10-17 67 views
-2

我正在嘗試使用全局變量禁止使用的項目。在我的項目,我有以下功能:如何使用函數中的值C

int addAccount() 
{ 
    int ID_number = 0; 
    int ID; 
    int ID_array[10]; 
    double account_balance; 
    double balance_array[10]; 
    int choice = getChoice(); 
    if (choice == 1) 
    { 
     if (ID_number + 1 > 10) 
     { 
     printf("Error\n"); 
     } 
     else 
     { 
     ID_number = ID_number + 1; 
     printf("Please enter the id\n"); 
     scanf("%d", &ID); 
     ID_array[ID_number - 1] = ID; 
     printf("Please enter the starting balance\n"); 
     scanf("%lf", &account_balance); 
     balance_array[ID_number - 1] = account_balance; 
     } 

    } 
    return; 

我需要以某種方式獲得的值數這些變量並在另一個功能(特別是ID,ID_NUMBER和account_balance)使用它們。我需要這些值的功能如下:

void displayAccounts() 
{ 
    int count; 
    int choice = getChoice(); 
    int ID_number = ID_number(); 

    if (choice == 2) 
    { 
     for (count = 0; count < ID_number; count++) 
     { 
     printf("Account #%d: ID is %d\n", count + 1, ID_array[count]); 
     printf("Account balance is %.2lf\n", balance_array[count]); 
     } 

    } 
} 

我知道如何返回一個值,但我不知道如何使多個值,其中它們發生的功能可用之外。我試圖甚至可能做什麼,或者可能是我以錯誤的方式討論我的項目?

+0

'返回ID_VALUE;'而不是隻'return;'(這會引發至少一個警告,因爲函數返回int) – joop 2014-10-17 10:02:19

+0

在C中,函數只能返回一個值。對於你的問題,你可以去存儲在一個數組中的值,然後將該數組返回到調用函數。 – Haris 2014-10-17 10:02:36

+1

使用指針,然後可以使用不同函數中的更新值... – 2014-10-17 10:02:40

回答

2

使用struct

struct Account 
{ 
    int count; 
    int ID_number; 
    int balance_array[10]; 

    // etc etc 
}; 

一個指針傳遞給addAccount

void addAccount(struct Account *account) 
{ 
    account->ID_number = 0; 
    // etc 
} 

然後把它傳遞給displayAccounts

void displayAccount(struct Account *account) 
{ 

} 

如:

struct Account account; 
addAccount(&account); 
displayAccount(&account); 

請注意,在C中,您需要使用struct前綴,除非您的結構爲typedef

+0

當我嘗試實現這一點時,我得到了錯誤「錯誤:未知類型名稱'帳戶'」在行「void addAccount (Account * account)「 – Titanguy654 2014-10-17 12:43:47

+0

對不起,我的錯誤是,我遺漏了幾個地方的'struct'關鍵字。 – Sean 2014-10-17 13:27:17

2

最明顯的選擇是創建一個struct,它可以包含任意數量的字段(包括數組),並且可以傳遞給函數並將其返回。這樣你就可以傳遞必要的狀態。

你當然也可以通過讓一個根函數定義結構變量來優化它,然後將指針傳遞給同一個實例。

相關問題