我正在编写一个memcpy的小实现,如下所示。
#include "stdio.h"
int main( )
{
int i=5;
int j=4;
printf("i=%d\t",i);
swap(&i,&j,sizeof(int));
printf("i=%d",i);
return 0;
}
int swap(void *vp1,void *vp2,int size)
{
char *a=(char *)vp1;
char *b=(char *)vp2;
for(int i=0;i<size;i++)
{
*a=*b;
a++;
b++;
}
return 0;
}
此代码的输出是
i = 5 i = 33
而不是
i = 5 i = 4
有人可以解释代码有什么问题吗?
答案 0 :(得分:-3)
#include "stdio.h"
int swap(void *vp1,void *vp2,int size)
{
int i;
char *a=(char *)vp1;
char *b=(char *)vp2;
for(i = 0; i<size;i++)
{
*a = *b;
a++;
b++;
}
return 0;
}
int main( )
{
int i=5;
int j=4;
printf("i=%d\t",i);
swap(&i,&j,sizeof(int));
printf("i=%d",i);
return 0;
}