[英]Called function work at printf but not at arithmetic statement
我制作了一个struct Triangle
并制作了一个 function 来计算p(perimeter/2)
。 当我在 printf 中调用printf
,它起作用了。 但是当我将相同的 function 称为简单的算术语句时,它不起作用并给我以下错误
called object 'p' is not a function or function pointer
源代码:
#include <stdlib.h>
typedef struct{
int a, b, c;
} Triangle;
int perimeter (Triangle t){
return t.a + t.b + t.c;
}
float p (Triangle t){
return perimeter(t) / 2.0;
}
int main() {
Triangle t = {3, 4, 5};
//float p = p(t);
printf("p = %.2f\n",p(t));
return 0;
}
//float p = p(t);
您不能对 function 和变量使用相同的名称。 将您的float p
更改为float a
,它应该可以工作。 或者将您的 function 重命名为perimeter
而不是p
。
同样一般来说,最好为函数使用稍长、清晰和描述性的名称。
线
float p = p(t);
定义了一个局部变量p
,它覆盖了全局 function p
。 此变量的类型为float
,因此它不是 function 或指针。
重命名变量以解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.