memcpy 和 memmove 的问题
本帖最后由 画载舟中 于 2019-10-3 06:30 编辑#include<stdio.h>
#include<string.h>
int main()
{
char s[] = "123456789";
char *p1=s;
char *p2=s+2;
printf("p2=%s\n",p2); //p2=3456789
memcpy(p2,p1,5);
printf("memcpr(p2,p1,5)\n p2 = %s\n",p2); //p2= 1234589
memmove(p2,p1,5);
printf("memmove(p2,p1,5)\np2 = %s",p2); //p2=1212389
return 0;
}
为什么
memmove(p2,p1,5);
printf("memmove(p2,p1,5)\np2 = %s",p2); //p2=1212389??为什么得出这个值? 我看懂了,你再看一看这个,看看能不能理解
#include<stdio.h>
#include<string.h>
int main()
{
char s[] = "123456789";
char *p1 = s;
char *p2 = s + 2;
printf("p1 = %s\tp2 = %s\n", p1, p2);
memcpy(p2, p1, 5);
printf("p1 = %s\tp2 = %s\n", p1, p2);
memmove(p2, p1, 5);
printf("p1 = %s\tp2 = %s\n", p1, p2);
return 0;
}
/*
p1 = 123456789p2 = 3456789
p1 = 121234589p2 = 1234589
p1 = 121212389p2 = 1212389
请按任意键继续. . .
*/
人造人 发表于 2019-10-2 20:57
我看懂了,你再看一看这个,看看能不能理解
嗯...刚上机 测试了下 为什么第一次拷贝时 p1的 数据会改变呢? 画载舟中 发表于 2019-10-3 06:42
嗯...刚上机 测试了下 为什么第一次拷贝时 p1的 数据会改变呢?
因为p1和p2重叠了
页:
[1]