int a;
int *pa = &a;
int **ppa = &pa;
int ***pppa = &ppa;
上面这段代码,pa就叫一级指针,也就是平时常说的指针,ppa 就是二级指针。
内存示意图如下:
不管几级指针有两个最核心的东西:
指针本身也是一个变量,需要内存去存储,指针也有自己的地址
指针内存存储的是它所指向变量的地址
这就是我为什么多级指针是逻辑上的概念,实际上一块内存要么放实际内容,要么放其它变量地址,就这么简单。
怎么去解读int **a这种表达呢?
int ** a 可以把它分为两部分看,即int* 和 *a,后面 *a 中的*表示 a 是一个指针变量,前面的 int* 表示指针变量a
只能存放 int* 型变量的地址。
对于二级指针甚至多级指针,我们都可以把它拆成两部分。
首先不管是多少级的指针变量,它首先是一个指针变量,指针变量就是一个*,其余的*表示的是这个指针变量只能存放什么类型变量的地址。
比如示指针变量 a 只能存放型变量的地址。
|