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 выше.

Другие вопросы по тегам