Memcpy func取Pointer变量? char * p; char * q;的memcpy(P,Q,10);它会起作用吗?

时间:2015-02-24 14:05:15

标签: c memcpy memcmp

Memcpymemcmp函数可以使用Pointer变量吗?

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

1 个答案:

答案 0 :(得分:1)

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

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

char buf[10], *p = buf;
const char *q = "hello hello";

memcpy(p, q, 10);
printf("the copying made the buffers %s\n",
  memcmp(p, q, 10) == 0 ? "equal" : "different");

当然p可以替换为上面的普通buf