作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
需要:一个返回两个不同值(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/
我是一名优秀的程序员,十分优秀!