昨天在想写反转字符串的时候,自己写了一个转换两个字符类型的swap():
void myswap(char *a,char *b)
{
char tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
然后想到C语言中怎么实现泛型的swap?最终在网上找到了这位大佬的答案:
int swap(void* lhs, void* rhs, size_t sz) {
void* temp = malloc(sz); // 如果有C99支持,可以用VLA
if (!temp) {
return -1;
}
memcpy(temp, lhs, sz);
memcpy(lhs, rhs, sz);
memcpy(rhs, temp, sz);
free(temp);
return 0;
}
作者:丁冬
链接:https://www.zhihu.com/question/36960338/answer/69787641
来源:知乎