Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C *和&;之间有什么区别;在函数参数中?_C_Pointers_Parameters_Reference_Dereference - Fatal编程技术网

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++书籍中阅读更多的参考资料。