Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中访问数组中的特定结构?_C_Arrays_Structure - Fatal编程技术网

如何在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字节的内存。