[英]Assign variable to struct member
我已经创建了一个带有char变量的结构。 我想在方法中使用它时为其分配一个字符串值,然后打印它。 我一直在环顾四周,但找不到有效的答案,但找不到我做错了什么。 为什么我会收到以下错误?
这是我尝试过的:
struct node{
char *val;
struct node *first;
struct node *last;
};
void main(){
struct node *new_node;
new_node =(struct node *)malloc(sizeof(struct node));
new_node.val = "a";
printf("%s",new_node.val);
}
我收到错误:
request for member 'val' in something not a structure or union
new_node
应该作为指针而不是实例来访问。 尝试new_node->val
而不是new_node.val
对已编辑问题的响应当您从char val
更改为char *val
您将需要进行额外处理:
*val
分配内存: new_node->val=(char*)malloc(sizeof(char))
*(new_node->val)="a"
printf("%c",*(new_node->val))
new_node
之前释放val
指针: free(new_node->val)
new_node.val应替换为new_node-> val。 因为new_node是一个指针。 请记住,new_node-> val(经常被称为箭头运算符)是(* new_node).val的简写。
另外我相信你可以写:
node *new_node = malloc(sizeof(node));
为了更容易阅读和更清晰的代码,因为malloc只返回指向给定内存地址的指针。 在编译程序时使用-Wall或其他警告标志,以减少逻辑错误或seg故障。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.