-1

我有这个问题:

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

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

4

2 回答 2

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);
    // ...
}
于 2013-07-01T22:56:44.117 回答
0

在代码的第 13 行使用:

Countcircumferenceofcircle(r,&Circumference);

代替

Countcircumferenceofcircle(r,Circumference);

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

于 2013-07-01T22:55:35.220 回答