2012-11-18 48 views
-7

我不知道如何將變量從main()傳遞給另一個函數。 我有這樣的事情:如何將變量傳遞到另一個函數?

main() 
{ 
    float a, b, c; 

    printf("Enter the values of 'a','b' and 'c':"); 
    scanf("%f %f %f",&a,&b,&c); 
} 

double my_function(float a,float b,float c) 
{ 
    double d; 

     d=a+b+c 
     bla bla bla bla 

我如何傳遞一個,從主b和c,以創建my_function?現在程序停止在scanf()上並在我把值寫入後直接結束。

我在這裏看到了不同的例子,但他們沒有幫到我很多。

+0

您應該在依賴具有新值的變量之前檢查'scanf()'的返回值。 – unwind

+1

如果在'scanf'上停止,因爲該函數等待輸入完成。程序在'scanf'後退出,因爲沒有更多的語句可以執行。關於用參數調用一個函數,這就是你已經用'printf'和'scanf'完成的事情,只需用正確的參數調用你自己的函數即可。 –

回答

5

通過傳遞參數ab,並c只需調用該函數。語法:

retval = function_name(parameter1,parameter2,parameter3); //pass parameters as required 

像這樣:

int main(void) 
{ 
    float a, b, c; 
    double d; 

    printf("Enter the values of 'a','b' and 'c': "); 
    if (scanf("%f %f %f",&a,&b,&c) == 3) 
    { 
     d = my_function(a, b, c); 
     printf("Result: %f\n", d); 
    } 
    else 
     printf("Oops: I didn't understand what you typed\n");  
} 
+0

這就是我所錯過的。謝謝 – Zako

2

函數調用。

my_function(a, b, c); 
2

你必須從主調用函數!

float my_function(float a,float b,float c) 
{ 
    float d; 

    d=a+b+c; 
    return d ; 
} 

int main() 
{ 
    float a, b, c; 
    float result ; 

    printf("Enter the values of 'a','b' and 'c':"); 
    scanf("%f %f %f",&a,&b,&c); 

    result = my_function(a,b,c); 
    printf("\nResult is %f", result);  

    return 0; 
} 
+1

+1:工作很好。理想情況下,你會測試輸入是否被正確接收。您的重寫確保函數定義在使用之前處於範圍內,並滿足C99。我寧願看到一個明確的'int main(void)'(至少C99需要'int')。 –

+0

很酷,很好的信息!編輯我的回覆也是爲了在main之前添加int。 – hack3r

相關問題