今天在学prime的时候第一次知道指针也能被引用,因为指针也是个对象。
int* p; // 声明一个指向 int 的指针 p
int*& a = p; // 声明一个指向指针的引用 a,并将其初始化为指针 p
-
int* p;
: 声明了一个指向整数的指针p
。 -
int*& a = p;
: 声明了一个指向指针的引用a
,并将其初始化为指针p
。这意味着a
引用了p
所指向的内存地址,而不是p
指向的具体值。
通过这样的声明,我们可以通过引用 a
修改指针 p
所指向的地址。这使得我们能够灵活地改变指针的指向,而不仅仅是修改指针所指向的值。
#include <iostream>
int main() {
int x = 5;
int* p = &x; // 指针 p 指向整数 x
int*& a = p; // 引用 a 引用了指针 p
int y = 10;
a = &y; // 修改指针 p 的指向,让其指向整数 y
std::cout << "x: " << x << std::endl; // 输出 x 的值
std::cout << "*p: " << *p << std::endl; // 输出 p 指向的值,即 y 的值
return 0;
}
在上述示例中,通过引用 a
修改了指针 p
的指向,使其指向了另一个整数 y
的地址。这展示了指向指针的引用的灵活性。