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); //应该这样写
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); //应该这样写