Memcpy func принимает переменную Pointer? char *p; char* q; тетср (р, д,10); это будет работать?
Memcpy
а также memcmp
функция может принимать переменную Pointer?
char *p;
char* q;
memcpy(p,q,10); //will this work?
memcmp(p,q,10); //will this work?
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
выше.