这两个指针代码之间的区别是什么

时间:2016-06-10 16:30:09

标签: c++

我找到了这两个不同的来源,但它们完全相同。我想知道是否存在差异,但我无法弄明白。

任何人都可以告诉我差异,我应该在何时使用哪个?

这是第一个:

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;
}

2 个答案:

答案 0 :(得分:2)

int *x是一个指针,而int &x是一个引用。可能最大的区别在于你无法改变引用指向的位置。

答案 1 :(得分:0)

第一个是指针,第二个是引用。这些想法有一些相似之处,但也存在差异。

指针是一种C和C ++机制,有点“纯粹”,但为高级概念(如指针算术)提供了更多的posibilies。引用只是C ++,更安全,更隐式,因为在使用引用的引用时,引用与普通变量使用相同的语法。如果要使用或更改其值,则指针更明确,因为您必须使用* var明确地取消引用它,并且明确地获取它。