我见过这样的东西:
void function( A_struct &var ) {
var.field0 = 0;
// ...
}
因为var
前面有&
,所以我认为var
是一个指针。但在正文中,不写var->field0
,而写var.field0
。所以,我的问题是:
var
不是指针吗?在函数参数中写
A_struct &var
和A_struct *var
有什么区别?
像A_struct &var
这样的语法在C
的上下文中是无效的。
在C++
的情况下用于表示通过引用传递。
相关:更多详细信息请参见此问题和相关答案
你的问题实际上与C++
有关
void function(A_struct &var)
对C
无效,因为在C
中它用于获取变量的地址。在C++
中,它是一种称为reference
的变量类型。你可以在这里看到一个例子
void function(A_struct *var)
在C
和C++
中是允许的,因为它是一个指针,它保存着A_struct
类型变量的地址。