如何 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变量并解决这个问题?
编辑:
这是未定义的行为:
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;
}
我需要从参数中获取浮点值
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变量并解决这个问题?
编辑:
这是未定义的行为:
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;
}