我找到了这两个不同的来源,但它们完全相同。我想知道是否存在差异,但我无法弄明白。
任何人都可以告诉我差异,我应该在何时使用哪个?
这是第一个:
void function1(int *x) {
*x = 100;
}
int main() {
int var1 = 10;
function1(&var1);
cout << var1 << endl;
}
这是第二个:
void function2(int &x) {
x = 100;
}
int main() {
int var2 = 10;
function2(var2);
cout << var2 << endl;
}
答案 0 :(得分:2)
int *x
是一个指针,而int &x
是一个引用。可能最大的区别在于你无法改变引用指向的位置。
答案 1 :(得分:0)
第一个是指针,第二个是引用。这些想法有一些相似之处,但也存在差异。
指针是一种C和C ++机制,有点“纯粹”,但为高级概念(如指针算术)提供了更多的posibilies。引用只是C ++,更安全,更隐式,因为在使用引用的引用时,引用与普通变量使用相同的语法。如果要使用或更改其值,则指针更明确,因为您必须使用* var明确地取消引用它,并且明确地获取它。