*和&之间有什么区别?在功能参数?

时间:2015-05-27 13:00:11

标签: c pointers parameters reference dereference

我看到过这种形式的东西:

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

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

  1. var不是指针吗?

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

2 个答案:

答案 0 :(得分:4)

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

C++表示传递引用时使用。

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

答案 1 :(得分:1)

您的问题实际上与C++

有关

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

中查看相关示例 void function(A_struct *var)C允许

C++,因为它是一个指针,用于保存A_struct类型变量地址的地址。