void Left_turn(int Pwm1, int Pwm2)
{
Pwm1 = Position_FeedbackControl(0, -600); // 90: -600 600 180: -1200 1200
Pwm2 = Position_FeedbackControl2(0, 600);
}
int main()
{
int externalPwm1 = 0;
int externalPwm2 = 0;
Left_turn(externalPwm1, externalPwm2);
// 在这里,externalPwm1 和 externalPwm2 的值仍然是 0,
// 因为 Left_turn 函数内部对参数的修改不会影响到外部变量。
}
Left_turn
函数中,当您传递 int Pwm1
和 int Pwm2
作为参数时,这些参数是按值传递的。这意味着函数内部对这些参数所做的任何修改都不会影响到函数外部的原始变量。
- 外部变量不会改变:函数外部的
externalPwm1
和externalPwm2
的值不会因为调用Left_turn
函数而发生改变。 - 内部参数被修改:函数内部的
Pwm1
和Pwm2
参数被修改,但这些修改只在函数作用域内有效。
二、如果您希望函数内部的计算结果能够被函数外部使用,可以考虑使用以下方法之一:
- 返回值:让函数返回一个新的结构体或元组,其中包含计算结果。
- 指针或引用:传递变量的指针或引用到函数中,这样函数内部可以直接修改外部变量。
使用返回值的方法示例、
struct PWMValues {
int Pwm1;
int Pwm2;
};
PWMValues Left_turn()
{
PWMValues result;
result.Pwm1 = Position_FeedbackControl(0, -600);
result.Pwm2 = Position_FeedbackControl2(0, 600);
return result;
}
int main()
{
PWMValues pwmValues = Left_turn();
// 使用 pwmValues.Pwm1 和 pwmValues.Pwm2
}
使用指针的方法示例:
void Left_turn(int* Pwm1, int* Pwm2)
{
*Pwm1 = Position_FeedbackControl(0, -600);
*Pwm2 = Position_FeedbackControl2(0, 600);
}
int main()
{
int Pwm1, Pwm2;
Left_turn(&Pwm1, &Pwm2);
// 使用 Pwm1 和 Pwm2
}