This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

why pointer doesn't change in struct?

In below code,I think pointer pexam->pf and pf1 will be same, but why pexam->pf++ can't change? What mistake i make? Can someone will help me. thx!

///////////////////////////
struct tagEXAM
{ int x; void (**pf)(void);
};
void fun1(void);
void fun2(void);
void (*code pf[])(void)=
{ fun1,fun2
};
struct tagEXAM code exam[] =
{ {1, pf}
};
int x;
void (**pf1)(void);
struct tagEXAM* pexam;
void main(void)
{ while (1) { pexam = exam; pf1 = pexam->pf;

(*pexam->pf)(); (*pf1)();

pexam->pf++; pf1++; (*pexam->pf)(); (*pf1)();
} }
void fun1(void)
{ x = 1;
} void fun2(void)
{ x = 2;
}

Parents
  • struct tagEXAM
    {
     int x;
     void (**pf)(void);
    };
    void fun1(void);
    void fun2(void);
    void (*code pf[])(void)=
    {
     fun1,fun2
    };
    struct tagEXAM code exam[] =
    {
     {1, pf}
    };
    int x;
    void (**pf1)(void);
    struct tagEXAM* pexam;
    void main(void)
    {
     while (1)
     {
      pexam = exam;
      pf1 = pexam->pf;
    
      (*pexam->pf)();
      (*pf1)();
    
      pexam->pf++;
      pf1++;
      (*pexam->pf)();
      (*pf1)();
     }
    }
    void fun1(void)
    {
     x = 1;
    }
    void fun2(void)
    {
     x = 2;
    }
    
    

Reply
  • struct tagEXAM
    {
     int x;
     void (**pf)(void);
    };
    void fun1(void);
    void fun2(void);
    void (*code pf[])(void)=
    {
     fun1,fun2
    };
    struct tagEXAM code exam[] =
    {
     {1, pf}
    };
    int x;
    void (**pf1)(void);
    struct tagEXAM* pexam;
    void main(void)
    {
     while (1)
     {
      pexam = exam;
      pf1 = pexam->pf;
    
      (*pexam->pf)();
      (*pf1)();
    
      pexam->pf++;
      pf1++;
      (*pexam->pf)();
      (*pf1)();
     }
    }
    void fun1(void)
    {
     x = 1;
    }
    void fun2(void)
    {
     x = 2;
    }
    
    

Children