如何在C中访问数组中的特定结构?
我有这个:如何在C中访问数组中的特定结构?,c,arrays,structure,C,Arrays,Structure,我有这个: 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 '->
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'
那么为什么我不能指向“列表”以及访问“列表”中特定“记录”的方法呢?列表本身,
p
,是一个指针,但值record[100]
不是。您可以使用->
操作符从p
访问值,然后使用
操作符从成员记录访问值。列表本身p
是指针,但值记录[100]
不是指针。您可以使用->
操作符访问p
中的值,然后在写入时使用
操作符访问成员记录中的值
`p->record[index]->field_1`
它扩展为
(*p)。(*记录[索引])字段_1
record[index]`
它本身返回一个值,因此在此之前添加*运算符没有意义。但是你可以用
p->(记录+索引)->写入时的字段1
`p->record[index]->field_1`
它扩展为
(*p)。(*记录[索引])字段_1
record[index]`
它本身返回一个值,因此在此之前添加*运算符没有意义。但是你可以用
p->(记录+索引)->字段1
添加可能帮助您读取/写入记录值的代码段。
完成后释放指向结构的指针
添加可能帮助您读取/写入记录值的代码段。
完成后释放指向结构的指针
使用
操作符而不是->
(第二个)…或completarty创建指向学生的指针数组。使用
操作符而不是->
(第二个)…或completarty创建指向学生的指针数组。那么我可以使用malloc()函数而不是提供固定数量的记录吗?会有什么问题吗?那么我可以使用malloc()函数而不是给定固定数量的记录吗?会有什么问题吗?很好。我问的是如何使用malloc()
函数。但是调用sizeof(List)
会创建未使用的计数器
变量吗?不会。它将只为计数器变量分配4字节的内存。我问的是如何使用malloc()
函数。但是调用sizeof(List)
会创建未使用的计数器
变量吗?不会。它将仅为计数器变量分配4字节的内存。