我有这个问题:
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;
}
我需要你的帮助来解决这个问题。
答案 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本身。在第一个中,你将地址/指针传递给你的双倍。