memcpy的有关问题,也是指针的有关问题,希望高手解决的有关问题,因为它有人叫小弟我去c新手论坛的有关问题

memcpy的问题,也是指针的问题,希望高手解决的问题,因为它有人叫我去c新手论坛的问题
int   a   =   1,b=2,c=3;
int*   p;
int   iDif   =   (int)&c   -   (int)&p;
memcpy(&p+iDif,&b,4);//结果c的值没有变成2
                memcpy(&c,&b,4);//结果c的值变成了2,但分明&p+iDif就是&c。
memcpy到底作了什么?看反汇编代码也许可以得到答案,但我没有完全看懂。



------解决方案--------------------
指针加法问题

&p 的类型是 int **

&p + iDif 实际地址加的值是 iDif *(sizeof(int **)), 也就是 iDif *4

memcpy(((BYTE *)(&p))+iDif, &b, 4); //应该这样写