如何解决通用void *说明成员'word'的请求不是结构或联合
我是C语言中void指针的新手。不幸的是,当我尝试在结构中调用变量时,它引发了以下错误:
[Error] request for member 'word' in something not a structure or union
给我的印象是,要做的就是创建一个void * var,然后可以将其用于引用任何数据或将其设置为任何值
#include <stdlib.h>
struct node{
void* listHeader;
struct node *next;
};
struct otherNode {
/*The word it stores*/
char* word;
};
void Method(struct node *header);
int main(){
struct node *header = malloc(sizeof(struct node));
Method(header);
return 0;
}
void Method(struct node *header){
(struct otherNode)(header->listHeader).word = "ties";
}
任何帮助将不胜感激!!谢谢您的时间!
解决方法
此行的两个问题:
(struct otherNode)(header-> listHeader).word =“ tie”;
-
操作员优先。
.
优先于投射。 -
您正在尝试将(void *)强制转换为(struct otherNode)。您实际上无法做到这一点,可以将其转换为指向该结构的指针,如下所示:
((struct otherNode*)header->listHeader)->word = "ties";
这将使您的代码编译,但不会成功运行,因为您尚未将header->listHeader
设置为指向任何地方(header->listHeader = malloc(sizeof(struct otherNode));
吗?),因此您正在写到不应该使用的内存区域
资源:
https://en.cppreference.com/w/c/language/operator_precedence
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。