我正在研究我认为很简单的问题,但是遇到了一些我似乎无法解决的问题。问题与代码中的resitance_current函数有关。我收到的两个错误消息是:
1)从“ float”类型分配给“ float *”类型时不兼容的类型
2)无效的二进制操作数/(具有“ float”和“ float *”)
我正在尝试使用功能resitance_current来计算电阻和电流。为此,我通过导线的“长度”(area_circle)和“电压”的“长度”值,并使用电阻率公式找到R:
R =ρL / A
和欧姆定律找到我
V = R * I
我似乎无法解决为什么float类型发生冲突的原因。我必须保留一个resitance_current函数来计算电阻和电流,因此在传递浮点指针和解决当前问题方面的帮助将不胜感激。
提前感谢您的帮助;)
代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float areaOfcircle(float radius_circle)
{
float area_circle;
area_circle = M_PI * radius_circle * radius_circle;
return area_circle;
}
void resitance_current(float length, float area_circle, float voltage, float* resistance, float* current)
{
float resistivity;
printf("%f %f %f", length, area_circle, voltage);
resistivity = 1.782*exp(-8);
resistance = ((resistivity*length)/area_circle);
current = (voltage/resistance);
}
int main()
{
float radius, voltage, length, current, resistance;
// take radius as input
printf("Enter the radius of wire : ");
scanf("%f", &radius);
if (radius < 0)
{
exit(1);
}
else
{
printf("Enter the Voltage of circuit : ");
scanf("%f", &voltage);
if (voltage < 0)
{
exit(1);
}
else
{
printf("Enter the Length of Wire : ");
scanf("%f", &length);
if (length < 0)
{
exit(1);
}
else
{
printf("Cross Sectional Area of Wire : %.2f", areaOfcircle(radius));
resitance_current(length, areaOfcircle(radius), voltage, &resistance, ¤t);
printf("Resistance = %f , Current = %f", resistance, current);
printf("\n");
}
}
}
return 0;
}
答案 0 :(得分:2)
当您将指针参数传递给函数时,就像使用float *resistance
和float *current
一样,当您将其分配为l值或访问它时,还必须取消引用它。指向值:
*resistance = ((resistivity*length) / area_circle);
*current = (voltage / *resistance);
请注意,我在除运算符/
和解引用运算符*
之间放置了一个空格,以防止编译器看到多行注释开始。