C *和&;之间有什么区别;在函数参数中?
我看到过这种形式的东西:C *和&;之间有什么区别;在函数参数中?,c,pointers,parameters,reference,dereference,C,Pointers,Parameters,Reference,Dereference,我看到过这种形式的东西: void function( A_struct &var ) { var.field0 = 0; // ... } 由于在var之前有&,我认为var是一个指针。但是在正文中,不是写var->field0,而是写var.field0。因此,我的问题是: var不是指针吗 在函数参数中写入A_结构&var和A_结构*var有什么区别 类似于A_struct&var的语法在C的上下文中无效 在C++的情况下,它用于表示按引用传递 相关:有关更多详细信息
void function( A_struct &var ) {
var.field0 = 0;
// ...
}
由于在var
之前有&
,我认为var
是一个指针。但是在正文中,不是写var->field0
,而是写var.field0
。因此,我的问题是:
var
不是指针吗A_结构&var
和A_结构*var
有什么区别类似于
A_struct&var
的语法在C
的上下文中无效
在C++
的情况下,它用于表示按引用传递
相关:有关更多详细信息,请参阅和相关答案。您的问题实际上与
C++
void函数(A_struct&var)
对C
无效,因为在C
中,它用于获取变量的地址。在C++
中,它是一种变量类型,称为reference
。你可以在中看到一个例子
C
和C++
中允许使用void函数(A_struct*var)
,因为是一个指针,它持有代码的地址:AyStReult<代码>变量的地址。< /P>这是C++引用。C中的这是非法的。你必须查看C++代码而不了解它。那么C++中的区别是什么?你可以把引用看作是<代码>自动撤销的常数指针<代码>。所以它看起来就像是变量本身的副本。你可以在任何基本的C++书籍中阅读更多的参考资料。