二级指针
#include <stdio.h>
//二级指针:还是指针,所以满足指针原本的特性,但是他用于存储一级指针的地址,
//经常用于:在做函数参数是改变一级指针的指向
int main()
{
int num_a = 10;
int num_b = 20;
int *p_a = &num_a;
int **p = &p_a;
printf("&num_a = %p\n",&num_a);
printf("*p = %p\n",*p);
printf("p_a = %p\n",p_a);
printf("------------------\n");
printf("p = %p\n",p); //查看p的内容以地址形式输出;
printf("&p_a = %p\n",&p_a);
printf("------------------\n");
printf("&p = %p\n",&p);
return 0;
}
结果:
- &num_a = 0x7ffce53ede90
- *p = 0x7ffce53ede90
- p_a = 0x7ffce53ede90
- p = 0x7ffce53ede98
- &p_a = 0x7ffce53ede98
- &p = 0x7ffce53edea0
误区解决:
- printf(“p = %p\n”,p); //查看p的内容以地址形式输出;
printf("&p = %p\n",&p); 是查看二级指针变量的地址 - *降级 &升级 例如&*p == p;
- 高级指针是存储他低一级指针的首地址,并且常用于修改低一级指针的指向
- 地址的操作有两个 *号和[]号
int num = 10;
int *p = NULL;
p = #
//他在定义的时候,可以定义时初始化,把他的*号省略掉
// int *p = # 相当于 int *p = NULL;p = #
int **p2 = &p; //相当于 int **p2 = NULL; p2 = &p;
//&*p == p;