使用memcpy()这可能是一个非常愚蠢的问题,但我不明白这一点:为什么用C
,如果我有:
void* a;
void* b;
我想实现一个通用的交换功能,我为什么能做到这一点并不:
void swap(void* a, void* b)
{
void* temp = malloc(sizeof(*a));
*a = *b;
*b = *temp;
free(temp);
}
谢谢
我添加了这个以后:
所以,我现在明白为什么它是不可能的,但现在我还有一个问题: 由于 的sizeof(*一) 是不确定的,有人告诉我,我可以这样做:
#define SWAP(a,b) \
{ \
void* temp = malloc(sizeof(*a)); \
memcpy(temp , a , sizeof(*a)); \
memcpy(a, b, sizeof(*a)); \
memcpy(b, temp, sizeof(*a));
free(temp);
}
当然
我承担和b是同一类型的。 这个解决方案为什么会起作用? 谢谢
当'a'类型为'void *'时'sizeof * a'是什么? – jamesdlin
我甚至没有在这里看到'memcpy' ... – pmr
什么是'x'和'y' ?! – Jori