【问题标题】:What is the difference between * and & in function parameters?函数参数中的 * 和 & 有什么区别?
【发布时间】:2015-08-09 14:03:18
【问题描述】:

我见过这种形式的东西:

void function( A_struct &var ) {
   var.field0 = 0;
   // ...
}

由于var之前有&,所以我认为var是一个指针。但是在正文中,不是写var->field0,而是写var.field0。所以,我的问题是:

  1. var 不是指针吗?

  2. 函数参数中写A_struct &varA_struct *var有什么区别?

【问题讨论】:

  • 这是 C++ 参考
  • 这在 C 中是非法的。你一定是在看 C++ 代码而没有意识到它。
  • 那么它们在 C++ 中的区别是什么?
  • 您可以将引用视为an automatically dereferenced constant pointer,因此它几乎看起来像是变量本身的副本。您可以在任何基本的 C++ 书籍中阅读有关参考的更多信息。

标签: c pointers parameters reference dereference


【解决方案1】:

你的问题其实和C++有关

void function(A_struct &var)C 无效,因为在C 中它用于获取变量的地址。在C++ 中,它是一种变量类型,称为reference。你可以在here看到它的一个例子

void function(A_struct *var) 允许在CC++ 中使用,因为它是一个指针,它保存了A_struct 类型变量的地址。

【讨论】:

    【解决方案2】:

    A_struct &var 之类的语法在 C 的上下文中无效。

    C++ 的情况下使用表示通过引用

    相关:请参阅this question 和相关答案了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-02
      • 2010-09-14
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多