引用和指针
在C++中,&符号有几种不同的含义,取决于上下文。如果&是引用操作的话,它可以创建一个别名或替代名称来引用另一个变量。例如:
int myNumber = 10;
int& Number = myNumber; // Number is a reference to myNumber
Number = 25; // This changes both Number and myNumber to 25
&也可以用作取地址运算符,它可以返回一个变量的内存地址。例如:
int myNumber = 10;
int* ptr = &myNumber; // ptr is a pointer that stores the address of myNumber
cout << ptr << endl; // This prints the address of myNumber
cout << *ptr << endl; // This prints the value of myNumber by dereferencing ptr
int myFirstNumber = 25;
int mySecondNumber = 20;
int &myReference = myFirstNumber;
myReference = mySecondNumber;
printf("%d", myFristNumber);
这段代码的输出是20。原因是:
myReference是myFirstNumber的引用,所以它们指向同一个内存地址。当你把mySecondNumber的值赋给myReference时,你也改变了myFirstNumber的值。所以,当你打印myFirstNumber时,它显示了20,而不是25。
如果你想保留myFirstNumber的原始值,你可以使用指针而不是引用。指针只存储一个变量的地址,而不会改变它的值。
在类中时,引用的值必须由构造函数按以下方式设置:
CMyClass::CMyClass(int &variable) : m_MyReferenceInCMyClass(variable)
{
// constructor code here
}
以下是指针和引用的等价
int& Number = myOtherNumber;
Number = 25;
它可以用指针等效代码如下:
int* pNumber = &myOtherNumber;
*pNumber = 25;