分析二级指针:都是围绕着以下几点来变的
1.对原始变量进行赋值,则原始变量、指向他的一级指针、二级指针值都会改变
简单点就是:对num,*p_num,**pp_num中任何一个赋值,这三个的值都会改变
2.对一级指针进行赋值,只改变一级指针和二级指针的值,一级指针原来指向的值不会改变,
简单点:对p_num,*pp_num中任何一个进行赋值,这俩的值都会改变,num的值不会改变,新值是对p_num赋值的新一级指针所指向的值
现在需要一点耐心,举一个简单的小例子:
#include <stdio.h>
int main(){
int pt=0,num=25,a=55;
int*p_pt=&pt,*p_num=#
int**pp_pt=&pt;
*pp_pt=p_num;
printf(“%d\n”,*p_pt);
printf(“%d\n”,*p_num);
printf(“%d\n”, pt);
printf(“%d\n”,num);
**pp_pt=a;
printf(“%d\n”,*p_pt);
printf(“%d\n”,*p_num);
printf(“%d\n”, pt);
printf(“%d\n”,num);
*p_num=pt;
printf(“%d\n”,*p_pt);
printf(“%d\n”,*p_num);
printf(“%d\n”, pt);
printf(“%d\n”,num);
return 0;
}
分析方法:
程序开始
pp_pt -> p_pt -> pt=10
p_num->num=25
a = 55
1. 执行*pp_pt=p_num;
*pp_pt=p_num实际相当于p_pt=p_num,作用改变了p_pt变量的值,从而p_pt不在指向pt了,而是指向新值所指向的值
pt=10
pp_pt->p_pt-> num=25
p_num -> num=25
a=55
2.执行**pp_pt=a;
执行完第一步后,**pp_pt=num=25,把a赋值给**pp_pt,相当于是把a赋值给num
pt=10
pp_pt->p_pt ->num=a=55
p_num -> num=a=55
a=55
3.执行*p_num=pt;
*p_num=pt,相当于是num=pt
pt=10
pp_pt->p_pt->num=pt=10
p_num -> num=pt=10
a=55
经过分析,打印后的结果是:
25
25
10
25
55
55
10
55
10
10
10
10