通过引用传递参数与函数中的值
考虑以下代码片段:
void trans(double x, double y, double theta, double m, double n) { m = cos(theta) * x + sin(theta) * y; n = -sin(theta) * x + cos(theta) * y; }
如果您按如下方式调用此函数:
trans(center_x, center_y, angle, xc, yc);
并期望值xc 和 yc 改变,你会失望的。这是因为在 C 中参数默认是按值传递的,这意味着对函数内部参数所做的任何更改都不会反映在传入的原始变量中。
要解决此问题,您可以传递通过引用传递参数或使用指针运算。
使用引用
在 C 中,可以使用引用来传递参数 参考。这允许您修改传入的原始变量。以下是修改 trans 函数以使用引用的方法:
void trans(double x, double y, double theta, double& m, double& n) { m = cos(theta) * x + sin(theta) * y; n = -sin(theta) * x + cos(theta) * y; }
请注意,参数类型现在是对 double 的引用(即 double&)。
然后您可以按如下方式调用该函数:
trans(center_x, center_y, angle, xc, yc);
现在将正确修改 xc 和yc.
使用指针算术
C 中通过引用传递参数的另一种方法是使用指针算术。这在 C 中更常见,但也可以在 C 中使用。以下是修改 trans 函数以使用指针算术的方法:
void trans(double x, double y, double theta, double* m, double* n) { *m = cos(theta) * x + sin(theta) * y; *n = -sin(theta) * x + cos(theta) * y; }
请注意,参数类型现在是指向 double 的指针(即 double*)。
然后您可以调用函数如下:
trans(center_x, center_y, angle, &xc, &yc);
这也会正确修改xc和yc的值。
以上是向 C 函数传递参数时如何修改原始变量?的详细内容。更多信息请关注PHP中文网其他相关文章!