消息关闭
    暂无新消息!

函数返回值与参数指针的区别

问题作者 : Lafflin2017-06-22发布
最近遇到一个奇葩问题
大致是这样的代码

float a = 0;
float b = 0;
float c = 0;

a = -0.003698;

float function1(void)
{
 return a;
}

void function2(float * rev)
{
 *rev = a;
}
b = function1();
function2(&c);

这个时候,
a的结果是-0.003698
b的结果是 -1.111989e+009
c的结果是-0.003698

问题来了!



为何调用返回值为浮点数的函数时,赋值会出错!!!
而使用浮点指针赋值,却能躲过赋值错误的问题!!!



6个回答

︿ 1
你那个extYcValue是不是在多个c文件里面定义了,你说的函数返回赋值和指针赋值结果不一样的情况,应该不可能会出现。你把完整代码贴出来看看
︿ 0
b = function1(); 之后b的值也会变成-0.003698的

但是,把这条语句写去主函数里,而不是在全局范围
︿ 0
这个函数返回值赋值,也只在特定文件里面赋值才会出问题,在有的文件里面不出问题。。。。