c - Why does `memmove` use `void *` as parameter instead of `char *`? -
the definition of c library function memmove following:
void* memmove(void *s1, const void *s2, size_t n) { char *sc1; const char *sc2; sc1 = s1; sc2 = s2; ... } i'm wondering why need use void* , const void* parameters' type. why not directly char* , const char*?
update
int test_case[] = {1, 2, 3, 4, 5, 6, 7, 8, 10}; memmove(test_case+4, test_case+2, sizeof(int)*4); output: test_case = {1, 2, 3, 4, 3, 4, 5, 6, 10}
void * generic pointer type. memmove supposed manipulate memory regardless of type of objects in memory.
similarly memcpy. compare strcpy uses char * parameters because it's supposed manipulate strings.
Comments
Post a Comment