【问题标题】:Difference between int f(int *i) and int f(int &i) [duplicate]int f(int *i) 和 int f(int &i) 之间的区别 [重复]
【发布时间】:2012-12-08 04:28:47
【问题描述】:

可能重复:
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。那么有什么区别呢?

【问题讨论】:

标签: c++


【解决方案1】:

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

【讨论】:

  • "or null in cpp" cpp 对你来说是什么?还是您的意思是 C++ 和 nullptr?
  • 是的,我的意思是nullptr。我已经更新了
  • ...cpp/C++ 我认为你的意思是 C++11?
  • 好的,不再引用单个空值或语言。希望这应该停止任何混乱
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2013-01-26
    • 2021-07-31
    • 2013-07-01
    • 2014-04-16
    相关资源
    最近更新 更多