繁体   English   中英

称为 function 在 printf 工作但不在算术语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM