C语言函数传递指针的理解以及二重指针的使用

C语言函数传递指针的理解

传递参数时会生成一个复制的指针,该指针指向的位置与 原指针指向的位置相同;

即b自身在计算机的地址与a的地址不是相同的,这时你在函数体内修改a指向的位置,一定不会修改b指向的位置。

如下面这个方法

void test(int *a){
   int l=2;
    a=&l;
}

此时
在这里插入图片描述
修改之后
在这里插入图片描述

那么想要修改b指向怎么办,很简单,就是将b在计算机存储的地址传递过来,那么怎么传递呢,这时候就要使用双重指针了,修改为下面的方法

void test(int **p){
    int l=2;
    // *p代表b指针地址指向的内容,就是b指针存储的内容,也就是1的地址
    *p=&l;
}

main方法


int *b=(int *)malloc(sizeof(int));
 *b=1;
//传递b指针的地址
 test(&b);
 printf("%d",*b);
}

此时的传递过程
在这里插入图片描述

此时p2存储的就是b指针的地址,*p2指向的就是b指针的单元,这时候修改*p2的内容就是修改外部b指针指向的内容

posted @ 2021-06-25 23:01  就很有趣xiaow  阅读(339)  评论(0)    收藏  举报