【为什么】引用和指针

简介: 【为什么】引用和指针

 在C++中,&符号有几种不同的含义,取决于上下文。如果&是引用操作的话,它可以创建一个别名或替代名称来引用另一个变量。例如:

int myNumber = 10; 
int& Number = myNumber; // Number is a reference to myNumber 
Number = 25; // This changes both Number and myNumber to 25

image.gif

&也可以用作取地址运算符,它可以返回一个变量的内存地址。例如:

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

image.gif

int myFirstNumber = 25;
int mySecondNumber = 20;
int &myReference = myFirstNumber;
myReference = mySecondNumber;
printf("%d", myFristNumber);

image.gif

这段代码的输出是20。原因是:

myReference是myFirstNumber的引用,所以它们指向同一个内存地址。当你把mySecondNumber的值赋给myReference时,你也改变了myFirstNumber的值。所以,当你打印myFirstNumber时,它显示了20,而不是25。

如果你想保留myFirstNumber的原始值,你可以使用指针而不是引用。指针只存储一个变量的地址,而不会改变它的值。

在类中时,引用的值必须由构造函数按以下方式设置:

CMyClass::CMyClass(int &variable) : m_MyReferenceInCMyClass(variable)
{
    // constructor code here
}

image.gif

以下是指针和引用的等价

int& Number = myOtherNumber;
Number = 25;

image.gif

它可以用指针等效代码如下:

int* pNumber = &myOtherNumber;
*pNumber = 25;
相关文章
|
6月前
|
存储 Java C++
C++ 引用和指针:内存地址、创建方法及应用解析
C++中的引用是现有变量的别名,创建时需用`&`运算符,如`string &meal = food;`。指针存储变量的内存地址,使用`*`创建,如`string* ptr = &food;`。引用必须初始化且不可为空,而指针可初始化为空。引用在函数参数传递和提高效率时有用,指针适用于动态内存分配和复杂数据结构操作。选择使用取决于具体需求。
93 9
|
6月前
|
存储 安全 C语言
引用指针
引用指针
35 1
|
5月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
74 1
|
6月前
|
C++
C++中的const指针与const引用
C++中的const指针与const引用
77 2
|
6月前
|
算法 C语言
通过指针引用数组
通过指针引用数组
50 1
|
6月前
|
算法 C语言
通过指针引用字符串
通过指针引用字符串
62 1
|
4月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
32 3
|
5月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
66 5
|
5月前
|
存储 安全 编译器
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
42 2