我正在尝试使用void指针传递数据,然后将其转换为(pData*)类型.我究竟做错了什么?gcc给了我
gcc test.c错误:请求成员'filename',而不是结构或联合
typedef struct data {
char *filename;
int a;
} pData;
void mod_struct(void *data) {
printf("%s\n",(pData *)data->filename); //error on this line
}
void main() {
pData *data;
data = (pData *) malloc(sizeof(pData));
data->filename = (char *)malloc(100);
strcpy(data->filename,"testing testing");
data->a=1;
mod_struct((void *)&data);
}
Run Code Online (Sandbox Code Playgroud)
AnT*_*AnT 10
应该
printf("%s\n", ((pData *) data)->filename);
Run Code Online (Sandbox Code Playgroud)
-> 运算符的优先级高于类型转换运算符.
除此之外,您的电话mod_struct应该如下所示
mod_struct((void *) data);
Run Code Online (Sandbox Code Playgroud)
那&你有没有做绝对没有任何意义.你为什么拿着什么data时候的地址data已经是你需要的指针?