struct student
{
char id[7];
char name[20];
char *lastname;
int salary;
};
struct student *std[4];
std[1]->id = 123;//这里提示表达式必须是可以修改的左值。
请问以上不是定义了一个指针数组吗?该数组里的所有指针都指向一个结构体类型。
请各位老师不吝赐教。
第1个回答 推荐于2018-03-11
你只是申请结构体指针数组,每个元素都是结构体指针,
注意,这些都是指针,而指针所指向的结构体空间却没有申请新的结构体或者指向一个存在的结构体。
std[1]->id //表示std[1]所指结构体中的项id,但是你指向指向的结构体却不知道是哪个·~
std[1]=(struct student *)malloc(sizeof(struct student));
//为std[1]指针指向申请的结构体本回答被网友采纳
注意,这些都是指针,而指针所指向的结构体空间却没有申请新的结构体或者指向一个存在的结构体。
std[1]->id //表示std[1]所指结构体中的项id,但是你指向指向的结构体却不知道是哪个·~
std[1]=(struct student *)malloc(sizeof(struct student));
//为std[1]指针指向申请的结构体本回答被网友采纳
第2个回答 2015-05-25
struct studen *(std[4])追问
仍然不行,但是为什么salary就可以呢?
id 定义成char*
id 定义成char*
追问char *id可以,但是就是不明白为什么char id[7]不行
追答静态字符串不能赋值给数组,只能初始化
本回答被提问者采纳