c-Memcpy函数是否接受指针变量?char*p;char*q;memcpy(p,q,10);它会起作用吗



Memcpymemcmp函数是否可以接受Pointer变量?

char *p;
char* q;
memcpy(p,q,10); //will this work?
memcmp(p,q,10); //will this work?

不,您编写的代码将不起作用,因为您正在向memcpy()(和memcmp(),但memcpy()调用就足够了)传递未初始化的指针。这将导致未定义的行为,因为您不允许从这些"随机"位置读取/写入。

您可以通过确保指针有效来修复它,例如:

char buf[10], *p = buf;
const char *q = "hello hello";
memcpy(p, q, 10);
printf("the copying made the buffers %sn",
  memcmp(p, q, 10) == 0 ? "equal" : "different");

当然,p可以用上面的普通buf来代替。

最新更新