gpt4 book ai didi

C改变一个void指针代表的值

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

这是对这个问题的跟进: Having a function change the value a pointer represents in C

作为练习,我尝试创建一个通用函数来更改未确定类型数组中的值。我想它应该看起来像那样。

void set_value(void * data, void * value, size_t size, int index){
void * position = data + index*size;
*position = *value;
}

当然那不编译,*position = *value 不使用值大小的信息(这里假设数据和值都指向 size_t 大小的 smthg)。

我想对我的程序说的是:“获取值指向的大小的内存块,并将其复制到位置指向的地址”

最佳答案

使用memcpy()

void set_value(void * data, void * value, size_t size, int index){
void * position = (char*)data + index*size;
memcpy(position, value, size);
}

另请注意,void 指针的算术运算在 C 中是无效的,尽管它可能被允许作为编译器扩展。您应该首先转换为 char*

关于C改变一个void指针代表的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19581161/

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