读书人

memcpy的有关问题也是指针的有关问题

发布时间: 2012-02-26 20:19:45 作者: rapoo

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


读书人网 >C语言

热点推荐