在我的函数中,我计算了两个不同的值(Esum 和 Eold),我希望它们是全局的(在函数之外)。 我想使用指针来存储值,但我不习惯这种技术。
这就是我的函数的样子,但无法存储全局值...不存储 Esum 和 Eold 全局...不好!
float Eold = 0.0f;
float Esum = 0.0f;
void ConPI(float Target, float Value, float Esum, float Eold){
E = Target - Value;
Esum = Esum + E;
Eold = E;
}
现在我正在寻找一种解决方案,使用 Esum 和 Eold 的指针来存储全局值。我不习惯使用指针,需要帮助我的函数:
void ConPI(float Target, float Value, float Esum, float Eold, float *p, float *q){
E = Target - Value;
Esum = Esum + E;
p = &Esum;
Eold = E;
q = &Eold;
}
这实际上是行不通的。跳出函数后 Eold 和 Esum 变为 0.000 .... 也许有人可以帮助我理解为什么会发生这种情况。
非常感谢!
最佳答案
您应该根据您的第一个函数定义执行类似的操作:
void ConPI(float Target, float Value, float *Esum, float *Ealt){
E = Target - Value;
*Esum = *Esum + E;
*Ealt = E;
}
通过这种方式,您可以传递指向 Esum 和 Eart 的指针。在函数中使用它们时,您可以使用解引用运算符。然后你可以像这样调用ConPI
:
float Target, Value, Esum, Ealt;
...
ConPi(Target, Value, &Esum, &Ealt);
现在,每次您调用 ConPi 时,Esum 和 Eatt 都会更新。
关于c - 如何存储函数的全局值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52977469/