指针的大小(sizeof)
32位系统 4字节
64位系统 8字节
一级指针
int a = 10;
int* p = &a;
printf("%p,%p,%p\n", &a, p, &p);//变量a的地址 变量a的地址 p指针的地址
//p指针的地址(内存中存储p指针位置的地址)
printf("%d,%d\n", a, *p);//10 10
说明
&a,a在内存中的地址
p,p中存储的是a在内存中的地址
&p,p指针的地址(内存中存储p指针位置的地址)
二级指针
int a = 10;
int* p = &a;
int* *p1 = &p;
//一步一步的分析
//*p1 == p;
//*p == a;
//**p1 == *p == a;
printf("%p,%p,%p\n", &p1, p1, &p);//p1空间的地址 p空间的地址 p空间的地址
printf("%d,%d,%d\n", a, *p, **p1);//10 10 10
printf("%p,%p,%p\n", *p1, p, &a);//a的地址 a的地址 a的地址
p是int类型的指针
要存储int类型的指针,需要int** 类型指针
p1是int** 类型的指针