双重指针
#include <stdio.h>
int main(void)
{
int i = 'c';
int* p = &i;
int** pp = &p;
printf("%p\n",i); //i的值
printf("%p\n",&i); //i的地址
printf("%p\n",p); //i的地址
printf("%p\n",&p); //p指针本身的地址,和i地址相差4字节
printf("%p\n",*p); //i的值
printf("%p\n",pp); //指向p指针本身的地址
printf("%p\n",&pp); //pp指针本身的地址
printf("%p\n",*pp); //i的地址
printf("%p\n",**pp); //i的值
return 0;
}
输出结果:
0000000000000063 //i的值 i
0000008bd63ffbec //i的地址 &i
0000008bd63ffbec //i的地址 p
0000008bd63ffbe0 //p指针本身的地址,和i地址相差4字节 &p
0000000000000063 //i的值 *p
0000008bd63ffbe0 //指向p指针本身的地址 pp
0000008bd63ffbd8 //pp指针本身的地址 &pp
0000008bd63ffbec //i的地址 *pp
0000000000000063 //i的值 **pp