我有这个:
typedef struct{
field_1;
field 2;
.....
}student;
typedef struct{
student record[100];
int counter;
}List;
然后我想为每个'学生'添加信息,例如:
List *p;
gets(p->list[index]->field_1);
但是当我编译代码时,它抛出了这个:
[Error] base operand of '->' has non-pointer type 'student'
那么为什么我不能指向“列表”以及访问“列表”中特定“记录”的方式?
答案 0 :(得分:1)
列表本身p
是一个指针,但值record[100]
不是。您可以使用->
运算符来访问p
和.
运算符的值,以访问成员records
中的值。
答案 1 :(得分:1)
写作时
`p->record[index]->field_1`
它被扩展为
(*p).(*record[index]).field_1
record[index]`
本身返回一个值,因此在此之前添加*运算符是没有意义的。但你可以使用
p->(record+index)->field_1
答案 2 :(得分:1)
添加可帮助您读取/写入记录值的代码段。 完成后释放指向结构的指针。
typedef struct{
int age;
int marks;
}student;
typedef struct{
student record[100];
int counter;
}List;
int main()
{
List *p = (List*)malloc(sizeof(List));
p->record[0].age = 15;
p->record[0].marks = 50;
p->counter = 1;
free(p);
return 0;
}