函数参数中的 * 和 & 有什么区别?
What is the difference between * and & in function parameters?
我见过这种形式的东西:
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++
的情况下使用,表示pass-by-reference。
相关:有关详细信息,请参阅 this question 和相关答案。
您的问题实际上与C++
有关
void function(A_struct &var)
对 C
无效,因为在 C
中它用于获取变量的地址。在 C++
中,它是一种称为 reference
的变量。您可以在 here
中查看示例
void function(A_struct *var)
在C
和C++
中是允许的,因为它是一个指针,它保存着A_struct
类型变量的地址。
我见过这种形式的东西:
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++
的情况下使用,表示pass-by-reference。
相关:有关详细信息,请参阅 this question 和相关答案。
您的问题实际上与C++
void function(A_struct &var)
对 C
无效,因为在 C
中它用于获取变量的地址。在 C++
中,它是一种称为 reference
的变量。您可以在 here
void function(A_struct *var)
在C
和C++
中是允许的,因为它是一个指针,它保存着A_struct
类型变量的地址。