gpt4 book ai didi

c - 具有 void 双指针输出的函数

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:41 24 4
gpt4 key购买 nike

一个函数返回一个包含指向 float 数组的指针的 void 双指针,我如何访问输出数据?

    void **pointer;

// function(void **ptr)
function(pointer);

这个指针指向的是一个float类型的指针。

   float *coords; 
coords = (float*)malloc(3*500*sizeof(float)); //I know the amount of memory to be allocated

如何从这个 void 双指针中读取数据?我很困惑。

最佳答案

您的函数原型(prototype)与您想要实现的目标不符。如果您希望您的函数分配内存并将其引用发送回 main,那么您的函数将如下所示(考虑到您想要传递双指针):

void function(void ***ptr)
{
float *coords;
coords = (float*)malloc(3*500*sizeof(float));
*ptr = (void **) &coords;
//do something
return;
}

main()
{
void **pointer;
function(&pointer);
/* Accessing first member of array allocated in function */
printf("%f", (*((float **)pointer))[0]);

}

如果这是目标,还有更简单的方法:

void function(void **p)
{
float *coords;
coords = (float*)malloc(3*500*sizeof(float));
*p = coords;
return;
}

main()
{
void *pointer;
function(&pointer);
printf("%f", ((float*)pointer)[0]);
}

希望这对您有所帮助。

关于c - 具有 void 双指针输出的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35012547/

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