例如以下代码,它的简单理解为:
int var;
int* ptr;
int** pptr;
var = 3000;
/* 获取 var 的地址 */
ptr = &var;
/* 使用运算符 & 获取 ptr 的地址 */
pptr = &ptr;
/* 使用 pptr 获取值 */
printf("var = %d\n", var);//3000
printf("var自身的地址:%d\n", &var);//9829104
printf("ptr的值:%d\n", ptr);//9829104
printf("*ptr = %d\n", *ptr);//3000
printf("**pptr = %d\n",**pptr);//3000
像&作用是取地址,这个 int* ptr,对于ptr它是一个指针变量,只能接受地址。
* 可以理解为取值的作用,*ptr取指针变量ptr指向的地址存放的值(3000)
**pptr可以先看成一个*pptr,此时得到的是ptr的值(ptr的值是var的地址),然后再看*ptr(其实相当于**pptr),此时得到的是var的数值3000。