为二进制分配类型和无效的操作数时,类型不兼容

时间:2019-01-09 20:27:02

标签: c function

我正在研究我认为很简单的问题,但是遇到了一些我似乎无法解决的问题。问题与代码中的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, &current);
                printf("Resistance = %f , Current = %f", resistance, current);
                printf("\n");
            }

        }
    }

    return 0;
}

1 个答案:

答案 0 :(得分:2)

当您将指针参数传递给函数时,就像使用float *resistancefloat *current一样,当您将其分配为l值或访问它时,还必须取消引用它。指向值:

*resistance = ((resistivity*length) / area_circle);
*current = (voltage / *resistance);

请注意,我在除运算符/和解引用运算符*之间放置了一个空格,以防止编译器看到多行注释开始。

相关问题