gpt4 book ai didi

C - 取消引用 void 指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:55 25 4
gpt4 key购买 nike

我正在尝试创建自己的交换函数,但遇到了麻烦。
为什么我得到“取消引用 void 指针”?

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;
}
}

关于C - 取消引用 void 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com