我正在尝试创建自己的交换函数,但遇到了麻烦。
为什么我收到“取消引用空指针”?
void ft_swap(void *a, void *b, size_t nbytes)
{
unsigned char *cur_a;
unsigned char *cur_b;
size_t i;
i = 0;
while (i < nbytes)
{
cur_a = (unsigned char *)*a + i; // here
cur_b = (unsigned char *)*b + i; // here
*a = cur_b;
*b = cur_a;
i++;
}
}
不允许取消引用 void 指针。您需要将其转换为另一种指针类型:
cur_a = (unsigned char *)a;
同样,您不能将任何内容分配给*a
。正确的代码是:
void ft_swap(void *a, void *b, size_t nbytes) {
unsigned char *cur_a = (unsigned char *) a;
unsigned char *cur_b = (unsigned char *) b;
for (size_t i = 0; i < nbytes; ++i) {
unsigned char tmp = cur_a[i];
cur_a[i] = cur_b[i];
cur_b[i] = tmp;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)