gpt4 book ai didi

c - 如何将 void** 数组(函数的返回值)分配给变量?

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

需要:一个返回两个不同值(int,str)的函数

所以 foo 计算了 smth。并存储两个值的地址在返回数组中。

现在我想将值读回到这些类型的变量中。

void** foo(){
void** bar = malloc(2 * sizeof(void*));
...
return bar;
}


int main(int argc, char* argv[]){
void** result = foo();
int* val1 = (int*)result[0];
char* val2 = (char*)result[1];
}

此代码段未编译。

对不起:

问题不在于代码,而在于我在 case 分支中声明了它没有任何计算指令。

int main(int argc, char* argv[]){
switch(xyz){
case a:
void** result = foo();
int* val1 = (int*)result[0];
char* val2 = (char*)result[1];
break;
}
}

这在案例中似乎没有意义。

谢谢。

最佳答案

如果您提出需要使用void**,则强烈表明程序设计不佳。忘记这个想法吧。一般来说,void指针是你应该避免的。

你真正想做的似乎是这样的:

typedef struct
{
int i;
char c;
} something_t;

something_t* foo (void)
{
something_t* result = malloc (sizeof(*result));
...
return result;
}

int main(int argc, char* argv[]){
something_t* result = foo();
int* val1 = &result->i;
char* val2 = &result->c;
}

如果结构体成员需要是指针,只需更改结构体即可。

关于c - 如何将 void** 数组(函数的返回值)分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40892951/

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