此问题已在此处有答案:
What's the difference between passing by reference vs. passing by value?(18回答)
Pass by reference and value in C++(5个答案)
5天前关闭。
我在下面写了一个函数:
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
的值会改变吗?如果没有,我该怎么办?
4条答案
按热度按时间rta7y2nd1#
由于你使用的是C++,如果你想改变
xc
和yc
,你可以使用引用:然而,如果你使用C,你必须传递显式的指针或地址,例如:
我建议您查看C++ FAQ Lite's entry on references以获取更多关于如何正确使用引用的信息。
yxyvkwin2#
通过引用传递确实是一个正确的答案,但是,C++ sort-of允许使用
std::tuple
和(对于两个值)std::pair
返回多值:这样,你根本不需要使用out-parameters。
在调用者端,可以使用
std::tie
将元组解压缩到其他变量中:希望这有帮助!
wwtsj6pe3#
你需要通过引用传递变量,这意味着
ifmq2ha24#
如上所述,您需要通过引用传递以返回'm'和'n'的更改值,但是。..考虑通过引用传递所有内容,并使用const作为您不希望在函数i中更改的参数。e.