c - Memcpy func 获取指针变量?字符*p;字符* q; memcpy(p,q,10);会起作用吗?

标签 c memcpy memcmp

Memcpymemcmp 函数可以接受指针变量吗?

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 %s\n",
  memcmp(p, q, 10) == 0 ? "equal" : "different");

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

关于c - Memcpy func 获取指针变量?字符*p;字符* q; memcpy(p,q,10);会起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28697861/

相关文章:

c - avr-gcc 使用 PROGMEM 没有看到 "const"修饰符

c - 警告 : cast to pointer from integer of different size [-Wint-to-pointer-cast] c programming

c++ - memcmp 适用于非平面结构吗?

c - 如何使用strchr在c中获取子字符串

c - 当我们尝试修改字符串常量时会发生什么?

c - 是否有一个用于 3d 旋转且舍入误差最小的简单 C 库?

c++ - 表达式 : _CrtlsValidHeapPointer(pUserData) error

C memcpy 未按预期运行

memcmp - strncmp和memcmp的使用

c - 如何检查值是否与字符串匹配