每个数据都有其储存地址,而定义的指针变量永远储存的为其所指向的变量的地址, *可以理解为找数据。
例如
*p *(查找)p(储存的地址)上的数据 *p=i 打印p则打印其储存的数据(i的地址)
**q **(查找)q(储存的地址)上的数据 先根据q所储存的数据(地址)查找到p所储存的数据(地址),然后根据p所储存的数据(地址)查找i 所以单独打印q或者*q都是打印地址(q所储存的数据009DF908(地址),*q为所指地址所存的数据009DF914)
#include<stdio.h>
int main(){
int i=1; //*p **q ***o
//一级指针 二级指针 三级指针
int *p=&i; //定义一个指针变量 一级指针 指向i变量存储的地址
int **q=&p;
int ***o=&q;
printf("i:%d\n",i);
printf("p:%p\n",p);
printf("*p:%d\n",*p);
printf("q:%p\n",q);
printf("*q%p\n",*q);
printf("**q:%d\n",**q);
printf("o:%p\n",o);
printf("*o:%p\n",*o);
printf("**o:%p\n",**o);
printf("***o:%d\n",***o);
getchar(); //防止程序闪退
}