c语言之二级指针

来源:互联网 发布:淘宝游戏专营店铺卖家? 编辑:程序博客网 时间:2024/05/18 04:09


分析二级指针:都是围绕着以下几点来变的

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=&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

0 0