int f(int * i)和int f(int& i)之间的差异

时间:2012-12-20 15:50:18

标签: c++

  

可能重复:
  What are the differences between pointer variable and reference variable in C++?
  Pointer vs. Reference

要在C ++中进行逐个引用调用,我想我可以使用这两个中的任何一个:

int f(int *x);
int g(int &x);

他们会被这样称呼:

int *w;
f(w);
g(*w);

int y;
f(&y);
g(y);

函数fg是否存在差异?我应该能够在x指针中使用int*,在两个函数中使用*x作为int。那有什么区别?

2 个答案:

答案 0 :(得分:3)

这大部分都是品味问题。但是有一个重要的区别。指针(*)可以具有空值,而引用不能为空,并且始终必须引用有效对象。

答案 1 :(得分:2)

引用不能为NULL,因此您无需检查。否则,它可能只是语法糖(至少对于简单的用例)。检查程序的反汇编以查看。