引用和指针

在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;
posted @ 2023-02-18 12:37  朱英浩  阅读(20)  评论(0编辑  收藏  举报