我从来没有遇到过像Python(隐式)或PHP(显式&)这样的引用问题。在PHP中,您编写$p = &$myvar;,并将$p作为指向$myVar的引用。

所以我知道在C++中您可以执行以下操作:

void setToSomething( int& var )
{
 var = 123;
}
int myInt;
setToSomething( myInt );
  • myInt现在是123,为什么?

  • 在C++中不是&的意思是x的“内存地址”吗?如果var只是myInt的地址而不是指针的地址,我该怎么办?
    void setToSomething( int* var )
    {
     *var = 123;
    }
    int myInt;
    int* myIntPtr = &myInt;
    setToSomething( myIntPtr );
    
  • 以上各项是否按预期工作?

  • 我不完全了解C++中*和&之间的区别。它们告诉您&用于获取变量的地址,但是为什么这样做对函数等有帮助呢?就像第一个示例一样?

    最佳答案

    在第一个示例中,&用于声明引用类型。
    它与用于获取对象地址的&运算符不同。

    您可以将引用类型视为在幕后使用永远不能是NULL的指针的类型。

    关于c++ - 我只是没有C++指针/引用系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2667420/

    10-15 06:49