指向指针的指针:
int i = 10;
int* p = &i; //p指向一个int型的数
int** p1 = &p; //p1指向一个int型的指针;
指向指针的引用:
引用本身不是一个对象,所以不能定义指向引用的指针。但是指针本身是一个对象,所以存在对指针的引用。
int i = 10;
int* p = &i;
int*& r = p; //r是一个对指针p的引用
int j = 20;
std::cout << *r <<std::endl;
r = &j; //r引用了一个指针,因此给r赋值&j就是令p指向j
std::cout << *p << " " << *r << std::endl;
*r = 0; //解引用r得到j,也是p指向的对象,将j的值改为0
std::cout << *p << " " << *r << " " << j << std::endl;
输出:
TIps:
对于类型比较复杂的情况,可以选择从右往左读的方法,&r首先是一个引用,*&r说明r引用的是一个指针。