先看一个小程序:
#include <stdio.h>
int main()
{
int i = 10;
int * p = &i;
int ** q = &p;
int *** r = &q;
//p指向了i变量,p中存储的是i的地址
printf("i变量本身的地址:%#X\n", p);
//由于p是int *类型,如果把int *看成一般数据类型,
//那么int *的指针变量就是(int *)* q,
//q就是指针变量
//q中存储int * 类型的变量的地址
printf("p变量本身的地址:%#X\n", q);
printf("q变量本身的地址:%#X\n", r);
printf("r变量本身的地址:%#X\n", &r);
//使用指针变量的逆运算,代替i表示相同的值
//*r表示q,
//*(*r)表示*q相当于p,
//**(*r)<=>**q<=>*(*q)<=>*p<=>i
printf("***r = %d\n", ***r);
return 0;
}
上面整个程序的运行结果在内存中的地址如下图所示:
多级指针主要用在跨函数使用内存方面。