如何 return 从参数中浮点值

How to return float value from parameter

我需要从参数中获取浮点值

float aCoefficiants[50]=
{
-0.000890288188976378,
..
}
float bCoefficiants[50] =
{
 
89.1324281858268,
..
}

   float* cArray ;
   Get_Coefficient_From_Value(2211,(float*)&cArray);
   printf(">> out %f %f",cArray[0],cArray[1]);

和功能:

void Get_Coefficient_From_Value(int32_t pulse, float * coefficient)
{
 
     coefficient[0] = aCoefficiants[0];
     coefficient[1] = bCoefficiants[0];
    printf(">> in %f %f\n",(coefficient[0]),(coefficient[1]));

}

我期望的输入参数:>> in -0.000890 89.132431 但输出值与原始值不匹配 >> out-0.001010 99.323250

如何获取参数corrrectlu中的float变量并解决这个问题?

编辑:

https://onlinegdb.com/Jy_ylNlVf

这是未定义的行为:

float* cArray ;
Get_Coefficient_From_Value(2211,(float*)&cArray);

cArray 未指向任何有效内容。此外,您将指向 cArray 的指针转换为浮点指针并将其传入。(从技术上讲,指向数组的指针就是数组,但我离题了)。

因此,当该函数写入 cArray[0] 和 cArray[1] 时,您正在踩踏不属于您的内存。

更好:

float cArray[2] = {0};
Get_Coefficient_From_Value(2211,cArray);

当您以这种方式调用它时,cArray 数组在作为参数传入时将“退化为指针”。该函数中的两个 coEfficient 赋值会将值移动到有效内存中。

float* cArray;

这是一个未初始化的指针,取消引用它会导致未定义的行为。将其更改为实际数组。以下完整程序应该可以工作。

#include <stdio.h>
#include <stdint.h>
 
void Get_Coefficient_From_Value(int32_t pulse, float * coefficient)
{
    coefficient[0] = -0.000890288188976378;
    coefficient[1] = 89.1324281858268;
    printf(">> in %f %f\n",(coefficient[0]),(coefficient[1]));
 
}
 
int main(void)
{
   float cArray[2];
   Get_Coefficient_From_Value(2211, cArray);
   printf(">> out %f %f",cArray[0],cArray[1]);
   return 0;
}