【发布时间】:2021-07-17 07:47:02
【问题描述】:
我在一个结构体中有一个结构体,如何将插入函数参数分配为名称元素的值
#include<stdlib.h>
#include<stdio.h>
typedef struct func{
int matric;
char name[120];
char phone[80];
float sal;
}Func;
struct arv {
Func* info;
struct arv* esq;
struct arv* dir;
};
typedef struct arv Arv;
void insert(Arv ** tree, char str[120])
{
Arv *temp = NULL;
if(!(*tree))
{
temp = (Arv *)malloc(sizeof(Arv));
temp->esq = temp->dir = NULL;
temp->info->name = str;
*tree = temp;
return;
}
}
在 temp->info->name = str 中,我有错误:表达式必须是可修改的左值
【问题讨论】:
-
请注意,由于 info 是一个 Func 指针,因此您还需要为 Func 分配空间。
temp->info = malloc(sizeof(Func)). -
OT:
(Arv *)转换成(Arv *)malloc(sizeof(Arv))是没用的,直接写temp = malloc(sizeof(Arv)),或者更好的temp = malloc(sizeof(*temp))