关于指针

今天认真分析了下指针,有一些感悟:
函数传递参数,只有传地址才能更改对应参数的值。
按照上面的原理,我们如果想要更改的是指针,那么我们必须传入指针的地址!!
也就是所谓的双层指针。
下面是我自己设计的一个验证代码,可以清晰看出,如果函数不传入指针地址的话,指针是不会移动的,依旧在原来的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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一开始没有理解,导致对这个概念非常的模糊和不解。最近看完《 彻底搞定C语言指针详解》,里面关于指针的指针的解释有了...
    Auditore阅读 5,093评论 0 1
  • 1、按变量的地址直接存取变量的方法,称为“直接访问”。存储该变量的内存空间的首地址称为该变量的地址。 2、如果将一...
    星期八我一定好好读书阅读 2,967评论 0 0
  • 简介 c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。...
    silverlaw阅读 2,795评论 0 2
  • 一、堆和栈上的指针 1.指针所指向的这块内存是在哪里分配的,在堆上称为堆上的指针,在栈上为栈上的指针. 2.在堆上...
    小张_ZR阅读 7,826评论 0 2
  • 概念 指针用于指向对象,具体来说指针保存的是另一个对象的地址string s = "Hello world";st...
    RyanXzw阅读 4,811评论 0 1