2013-07-01 41 views
-1

我有問題,這樣的:parameter1.c:4:6:注:應爲 '雙*',但參數的類型爲 '雙師型'

parameter1.c: In function ‘main’: 
parameter1.c:13:2: error: incompatible type for argument 2 of ‘Countcircumferenceofcircle’ 
parameter1.c:4:6: note: expected ‘double *’ but argument is of type ‘double’ 

這裏是代碼:

#include <stdio.h> 
#define phi 3.14 

void Countcircumferenceofcircle(int radius, double *C) { 
    *C = 2*phi*radius; 
} 

int main (void) { 
    int r; 
    double Circumference; 

    printf("Insert radius:"); 
    scanf("%d", &r); 

    Countcircumferenceofcircle(r, Circumference); 
    printf("Circumference=%f\n", Circumference); 

    return 0; 
} 

我需要你的幫助來解決這個問題。

+1

變化'Countcircumferenceofcircle(R,&周長);' – BLUEPIXY

+3

看你做了什麼的'scanf'?對'Countcircumferenceofcircle'做同樣的事情。 –

+1

重複的許多[期望的'X',但參數的類型'Y'](http://stackoverflow.com/q/6778384/)問題。錯誤消息確切地說出了什麼問題。您正在調用一個函數,該函數接受一個聲明爲'double * C'的參數,但是您傳遞了一個'double',這不是一回事。 –

回答

6

您必須通過變量的地址,因爲該函數需要一個指針。結果是函數調用修改了你的原始變量:

double Circumference; 

Countcircumferenceofcircle(r, &Circumference); 
//       ^^^ 

// now Circumference is different! 

順便說一下,這是相對不雅和古老的設計。這將是更清潔,更沒有效率較低,這樣寫:

double circumference(int radius) 
{ 
    return 2.0 * M_PI * radius; 
} 

int main() 
{ 
    // ... 
    double c = circumference(r); 
    // ... 
} 
+0

謝謝,它的作品.... 我是新手在C編程 –

0

在你的代碼中使用的線13:

Countcircumferenceofcircle(r,&Circumference); 

代替

Countcircumferenceofcircle(r,Circumference); 

這個函數接收一個指向雙,在第二個例子中,你正在傳遞的雙重本身。在第一個中,你將地址/指針傳遞給你的double。

相關問題