我从来没有遇到过像Python(隐式)或PHP(显式&)这样的引用问题。在PHP中,您编写$p = &$myvar;
,并将$p
作为指向$myVar
的引用。
所以我知道在C++中您可以执行以下操作:
void setToSomething( int& var )
{
var = 123;
}
int myInt;
setToSomething( myInt );
在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/