简单说,二级指针是指其指向的还是一个指针,三级指针是指其指向的是一个二级指针,三级指针使用解引用(解除引用)运算符“*”运算后是一个二级指针,再次解引用(三级指针前置**)得到一个一次指针,再次解引用(三级指针前置***),得到具体值。
至于指针引用,表示引用的是一个指针,其使用相当于对其引用的对象(指针)的直接使用,解引用也是一样,引用的三级指针解引用前使用“***”也能得到其内存中的具体值。
(注意变量引用,使用时也是相对于对变量的直接使用。)
直接看代码和下面的图片:
#include <iostream>
using namespace std;
int main()
{
// 多级指针
int i = 5;
int *p = &i;
int* *p2 = &p;
int** *p3 = &p2;
cout<<p<<" "<<*p2<<" "<<**p3<<endl; // 0012FF44 0012FF44 0012FF44
(***p3)++; // 6
cout<<i<<endl;
// 多级指针引用
int* &r = p;
cout<<r<<" "<<*r<<endl;// 0012FF44 6
int** &r2 = p2;
cout<<*r2<<" "<<**r2<<endl;// 0012FF44 6
int*** &r3 = p3;
cout<<**r3<<" "<<***r3<<endl;// 0012FF44 6
int j = 77;
cout<<&i<<" "<<&p3<<" "<<&j;
system("pause");
return 0;
}
/*
0012FF44 0012FF44 0012FF44
6
0012FF44 6
0012FF44 6
0012FF44 6
0012FF44 0012FF38 0012FF28
*/
-End-