美文网首页
关于指针

关于指针

作者: Allen的光影天地 | 来源:发表于2018-09-23 23:39 被阅读11次

    今天认真分析了下指针,有一些感悟:
    函数传递参数,只有传地址才能更改对应参数的值。
    按照上面的原理,我们如果想要更改的是指针,那么我们必须传入指针的地址!!
    也就是所谓的双层指针。
    下面是我自己设计的一个验证代码,可以清晰看出,如果函数不传入指针地址的话,指针是不会移动的,依旧在原来的P头。

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct PolyNode *Polynomial; // 多项式本身就是一个指针
    struct PolyNode{
        int coef;  // 系数
        int expon; // 指数
        Polynomial link;  // 指向下一个位置
    };
    
    void Test(Polynomial *p, Polynomial p2){
        Polynomial pp;
        pp = (Polynomial)malloc(sizeof(Polynomial));
        pp->expon = 3;
        pp->coef = 2;
        pp->link = NULL;
        (*p)->link = pp;
        *p = pp;
        p2->link = pp;
        p2 = pp;
    }
    
    int main()
    {
        Polynomial p, temp1, temp2;
        p = (Polynomial)malloc(sizeof(Polynomial));
        p->coef = 4;
        p->expon = 5;
        temp1 = p;
        temp2 = p;
        Test(&temp1, temp2); // 修改内容,我们要传地址; 修改地址,我们要传地址的地址!!!
        PrintPoly(temp1);
        PrintPoly(temp2);
    
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:关于指针

          本文链接:https://www.haomeiwen.com/subject/snxcoftx.html