gpt4 book ai didi

将 void * 转换为数组

转载 作者:行者123 更新时间:2023-11-30 14:23:20 31 4
gpt4 key购买 nike

我需要转换一个数组,将其放入具有 void* 元素的结构中,然后返回另一个数组:

unsigned short array[size];
//do something to the array

typedef struct ck{

void * arg1;
void * arg2;
void * arg3;


} argCookie;


argCookie myCookie;

myCookie.arg2=malloc(sizeof(array));//alloc the necessary space
memcpy(myCookie.arg2,&array,sizeof(array));//copy the entire array there


//later....


unsigned short otherArray[size];
otherArray=*((unsigned short**)aCookie.arg2);

碰巧最后一行无法编译...这是为什么?显然我在某个地方搞砸了......

谢谢。

最佳答案

不能通过为数组分配指针来复制数组,数组不是指针,也不能分配给数组,只能分配给数组的元素。

您可以使用 memcpy() 复制到数组中:

//use array, or &array[0] in memcpy,
//&array is the wrong intent (though it'll likely not matter in this case
memcpy(myCookie.arg2,array,sizeof(array));

//later....

unsigned short otherArray[size];
memcpy(otherArray, myCookie.arg2, size);

假设您知道 size ,否则您还需要将大小放入您的其中一个 cookie 中。根据您的需要,您可能不需要复制到 otherArray 中,只需直接使用 cookie 中的数据即可:

unsigned short *tmp = aCookie.arg2;
//use `tmp` instead of otherArray.

关于将 void * 转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12973630/

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