【发布时间】:2013-11-07 08:18:22
【问题描述】:
在 c++ 中,有多种方法可以将对象作为参数传递给函数。我一直在阅读有关按值传递和引用传递的内容。
这些链接非常有用:
http://www.yoda.arachsys.com/java/passing.html http://www.yoda.arachsys.com/csharp/parameters.html
就我现在想知道的 c++ 而言,我也看到了这篇文章:
http://www.learncpp.com/cpp-tutorial/73-passing-arguments-by-reference/
这些涉及按值传递和引用之间的区别。最后一篇文章也描述了这个问题的一些利弊。我想知道在函数中未修改对象的情况下将参数作为值传递的利弊。
int f(sockaddr_in s) {
// Don't change anything about s
}
int f(sockaddr_in *s) {
// Don't change anything about s
}
两者都允许我访问它拥有的变量。但我想知道我应该使用哪一个,以及为什么。
【问题讨论】:
-
在第二个例子中你的意思是
int f(sockaddr_in &s) {通过引用而不是*s?,否则你传递的是一个指针,它不完全一样。 -
这里没有传递引用。除此之外,通常会传递一个指针(或引用),以避免复制整个对象。
-
@stijn 这是一个非常有用的链接。可惜我之前没发现。
标签: c++ pointers parameter-passing pass-by-value