我是C lang的新手。我的代码就像:
int afunc(const struct datas *mydata, void *value) {
value = &mydata->astring; // astring is in structure char[20]
return 0;
}
int main (...) {
...
const char *thevalue;
if (!afunc(thedata, &thevalue) {...}
...
}
var值中的地址仅在函数中,当函数超过变量时,value仍为空...所以,我希望结构中的数组指针。
我该如何解决这个问题?
答案 0 :(得分:2)
使用指针传递必须在C中修改的变量。但是,如果要修改指针值,则必须将指针传递给该指针,然后取消引用函数中的指针。像这样:
int afunc(const struct datas *mydata, void **value) {
*value = &mydata->astring; // astring is in structure char[20]
return 0;
}
int main (...) {
...
const char *thevalue;
if (!afunc(thedata, &thevalue) {...}
...
}
答案 1 :(得分:2)
像这样修复
#include <stdio.h>
struct datas {
char astring[20];
};
int afunc(const struct datas *mydata, void *value) {
*(const char **)value = mydata->astring;
return 0;
}
int main (void) {
struct datas mydata = { "test_data" }, *thedata = &mydata;
const char *thevalue;
if (!afunc(thedata, &thevalue)) {
puts(thevalue);
}
}