尝试初始化成员时出现Typedef结构错误

时间:2015-07-22 20:49:35

标签: c compiler-errors typedef

我知道下面的代码不完整。我正在调试它,无论我做什么,我都无法弄清楚为什么我会收到错误:请求成员'gpa'不是结构或联合(第22行)。我很肯定有更多的代码要做,而且有更多的警告和错误,我还没有担心这些。就是我从未遇到的这一个。

#define     _CRT_SECURE_NO_WARNINGS
#include    <stdio.h>
#include    <string.h>
#define     MAXNAME        11
#define     MAXSTUDENTS     9


typedef struct student
    {
        char    name[ MAXNAME ];
        double  gpa;
        char    grade;
    }student_t;

void    grade_students(student_t  *, int n);
void    print_students(student_t  *, int n);

int main()
{
    student_t   students[ MAXSTUDENTS ];
    int         n;
    students.gpa    =   n;
    FILE        *infilep;

    infilep = fopen("lab09.in", "r");

}

我想要做的是使用typedef成员但是当我尝试遵循我的文本和类注释中使用的格式时,我得到了错误。

1 个答案:

答案 0 :(得分:0)

变量students被声明为student_t

类型的元素数组
student_t   students[ MAXSTUDENTS ];

因此,要访问数组的元素,您应该使用下标运算符,例如

students[0].gpa    =   0.0;

另一个例子可以在函数print_students中使用。虽然在函数中它只是一个指针但是你可以使用与下标运算符相同的语法

void    print_students( const student_t  *students, int n )
{
    for ( int i = 0; i < n; i++ )
    {
        puts( students[i].name );
        //...
    }
}