parameter1.c:4:6:注意:预期'double *'但参数类型为'double'

时间:2013-07-01 22:51:42

标签: c

我有这个问题:

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;
}

我需要你的帮助来解决这个问题。

2 个答案:

答案 0 :(得分: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);
    // ...
}

答案 1 :(得分:0)

在代码的第13行使用:

Countcircumferenceofcircle(r,&Circumference);

而不是

Countcircumferenceofcircle(r,Circumference);

该函数接收指向double的指针,在第二个示例中,您将传递double本身。在第一个中,你将地址/指针传递给你的双倍。