函数参数中的 * 和 & 有什么区别?

What is the difference between * and & in function parameters?

我见过这种形式的东西:

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

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

  1. var不是指针吗?

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

A_struct &var 这样的语法在 C 的上下文中无效。

C++的情况下使用,表示pass-by-reference

相关:有关详细信息,请参阅 this question 和相关答案。

您的问题实际上与C++

有关

void function(A_struct &var)C 无效,因为在 C 中它用于获取变量的地址。在 C++ 中,它是一种称为 reference 的变量。您可以在 here

中查看示例

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