Я пытаюсь написать простую функцию, которая будет заменять любые две переменные одного типа.
void swap(void* a, void* b, int size);
void swap(void* a, void* b, int size){
void* temp = malloc(size);
memcpy(temp, a,size);
memcpy(a, b, size);
memcpy(b, temp,size);
free(temp);
}
int main(int argc, char* argv[])
{
char name[] = "name";
char greet[] = "greet";
swap(name, greet, 30);
printf("%s\n", name);
printf("%s\n", greet);
return 0;
}
Но то, что напечатано в приведенном выше коде:
`
name
значение, на которое указывает a (в swap), изменяется на `после memcpy (b, temp, size), я не уверен, почему?